建表時指定 DELAY_KEY_WRITE=1 的 MyISAM 表,查詢結束後不立即將索引變更刷盤,而是暫存在記憶體鍵緩衝區(Key Buffer)。只有在緩衝區清理或表關閉時,才將索引塊批量寫入磁碟。對於頻繁更新、高併發讀寫的 MyISAM 表,能大幅提升處理效能。
--myisam-recover 可自動檢查修復所有 MyISAM 表。myisamchk 修復。SET GLOBAL delay_key_write = ON; 或 my.cnf 設 delay_key_write = ON。CREATE TABLE t (...) ENGINE=MyISAM DELAY_KEY_WRITE=1; 或 ALTER TABLE t DELAY_KEY_WRITE=1;。DELAY_KEY_WRITE:表關閉前,UPDATE 僅刷新數據到磁碟,索引變更留在記憶體,關閉表時一次性刷盤。能顯著加速 MyISAM 索引更新。
DELAY_KEY_WRITE=1。ALTER TABLE table_name DELAY_KEY_WRITE=1;。頻繁 UPDATE 的大型 MyISAM 表。參數能延遲索引刷盤至表關閉,顯著降低寫入延遲。
小提示:啟用後務必配置 --myisam-recover 啟動參數,確保崩潰後自動修復索引一致性。