MYSQL參數DELAY_KEY_WRITE

來源:互聯網
上載者:User

這個參數是指,在表關閉之前,將對錶的update操作指跟新資料到磁碟,而不更新索引到磁碟,把對索引的更改記錄在記憶體。這樣MyISAM表可以使索引更新更快。在關閉表的時候一起更新索引到磁碟。

 

    這個參數只對MyISAM引擎表有作用。你可以在create table的時候,指定DELAY_KEY_WRITE。或者ALTER TABLE table_name DELAY_KEY_WRITE= 1,當表已經存在的時候。

    如果你的某個表有很多update操作,這個參數的優勢會很好的體現出來。因為這個參數能延遲更新索引到表關閉。當我們需要經常跟新一個大表的時候,可以考慮使用這個參數。

 

    那麼,表關閉會在什麼時候發生?你可以理解成當flash table的時候,表將關閉。那麼有2種情況將會發生 flush table:
    當cache 滿了一個新的thread試圖開啟一個表的時候,那個表沒有在cache;
    當cache裡的表數比table_cache多時thread不在使用表;
    這個2種情況將會flush table。

 

    當然,你也可以直接設定啟動參數flush_time ,設定每多少時間flush table一次。

 

   當DELAY_KEY_WRITE使用的時候,如果出現重啟或者掉電等情況,會導致在cache的索引update沒來得及更新,所以必須在啟動參數加上--myisam-recover,這樣在你啟動mysql的時候會檢查你的表並同步表和索引.或者在重啟伺服器之前運行myisamchk。(然而,即使在這種情況下,應通過使用DELAY_KEY_WRITE保證不遺失資料,因為關鍵字資訊總是可以從資料行產生)。

 

要注意的是,但如果你使用該特性,你應用--myisam-recover選項啟動伺服器,為所有MyISAM表添加自動檢查。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.