DELAY_KEY_WRITE 是 MyISAM 表專用選項:表關閉前不將索引修改刷盤,僅更新數據文件,索引變更留在內存鍵緩衝,關表時統一刷新,大幅減少隨機 I/O。
CREATE TABLE t (...) ENGINE=MyISAM DELAY_KEY_WRITE=1;ALTER TABLE t DELAY_KEY_WRITE=1;--delay-key-write=ALL 啟動參數。風險:崩潰/斷電/殺進程導致內存索引未刷盤丟失,表損壞需修復。
防護:
--myisam-recover=FORCE,BACKUP:啟動時自動檢查修復。myisamchk -r tbl 修復。InnoDB 通過 innodb_flush_log_at_trx_commit、innodb_buffer_pool、change_buffer 實現類似延遲刷盤,但有 Redo Log 保證崩潰安全,**無需手動開關**。