MySQL延遲更新索引(delay_key_write),delaykeywrite

來源:互聯網
上載者:User

MySQL延遲更新索引(delay_key_write),delaykeywrite

MySQL延遲更新索引(Delayed Key Write):

           使用表建立選項DELAY_KEY_WRITE建立的myisam表,在查詢結束後,不會將索引的改變資料寫入磁碟,而是在記憶體的健緩衝區(In-memory key buffer)中緩衝索引改變資料。它只會在清理緩衝區,或關閉表時,才將索引塊轉儲到磁碟。對於資料經常改變,並且使用頻繁的表,這種模式大大提高了表的處理效能。


          不過,如果在伺服器或系統奔潰,索引將肯定損壞,並需要修複。使用者可以使用指令碼,如運行myisamchk工具,在重啟伺服器前進行修複,也可以使用自動修複(Automatic Recovery)選項進行修複(即使沒有選用DELAY_KEY_WRITE選項,這些修複上的安全措施也是很有價值的)。延遲更新索引特性可以被全域配置,也可以為個別表單獨配置。


MySQL資料庫參數DELAY_KEY_WRITE

        DELAY_KEY_WRITE是指在表關閉之前,將對錶的update操作只更新資料到磁碟,而不更新索引到磁碟,把對索引的更改記錄在記憶體。(這個選項的作用是暫時制止MySQL在該命令每插入一條新記錄和每修改一條現有之後立刻對索引進行重新整理,對索引的重新整理將等到全部記錄插入/修改完畢之後再進行)

        這樣MyISAM表可以使索引更新更快。在關閉表的時候一起更新索引到磁碟。

     

使用:1:create table的時候,指定DELAY_KEY_WRITE。

            2: 當表已經存在的時候:ALTER TABLE table_name DELAY_KEY_WRITE= 1。


情境:表有update操作,duang duang的體現出優勢了。因為這個參數能延遲更新索引到表關閉。經常更新一個大表的時候,可以用這個參數


小提示:當DELAY_KEY_WRITE使用的時候,如果出現重啟或者掉電啥的情況,會導致在cache的索引update沒來得及更新,所以必須在啟動參數加上 --myisam-recover,這樣在你啟動mysql的時候會檢查你的表並同步表和索引.或者在重啟伺服器之前運行myisamchk。使用該特性,應用--myisam-recover選項啟動伺服器,為所有MyISAM表添加自動檢查。


相關文章

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.