MySQL參數(shù)DELAY_KEY_WRITE

DELAY_KEY_WRITE是指在表關(guān)閉之前,將對(duì)表的update操作指跟新數(shù)據(jù)到磁盤,而不更新索引到磁盤,把對(duì)索引的更改記錄在內(nèi)存。這樣MyISAM表可以使索引更新更快。在關(guān)閉表的時(shí)候一起更新索引到磁盤。

使用:create table的時(shí)候,指定DELAY_KEY_WRITE。

當(dāng)表已經(jīng)存在的時(shí)候:·ALTER TABLE table_name DELAY_KEY_WRITE= 1·。

適用范圍:表有update操作,這個(gè)參數(shù)的優(yōu)勢(shì)會(huì)很好的體現(xiàn)出來(lái)。因?yàn)檫@個(gè)參數(shù)能延遲更新索引到表關(guān)閉。當(dāng)我們需要經(jīng)常跟新一個(gè)大表的時(shí)候,可以考慮使用這個(gè)參數(shù)。

說(shuō)明:表關(guān)閉會(huì)在什么時(shí)候發(fā)生?你可以理解成當(dāng)flash table的時(shí)候,表將關(guān)閉。那么有2種情況將會(huì)發(fā)生flush table:

當(dāng)cache 滿了一個(gè)新的thread試圖打開(kāi)一個(gè)表的時(shí)候,那個(gè)表沒(méi)有在cache;

當(dāng)cache里的表數(shù)比table_cache多時(shí)thread不在使用表;

這個(gè)2種情況將會(huì)flush table。

當(dāng)然,你也可以直接設(shè)置啟動(dòng)參數(shù)flush_time ,設(shè)置每多少時(shí)間flush table一次。

需要注意的是

·當(dāng)DELAY_KEY_WRITE使用的時(shí)候,如果出現(xiàn)重啟或者掉電等情況,會(huì)導(dǎo)致在cache的索引update沒(méi)來(lái)得及更新,所以必須在啟動(dòng)參數(shù)加上 --myisam-recover·,這樣在你啟動(dòng)mysql的時(shí)候會(huì)檢查你的表并同步表和索引.或者在重啟服務(wù)器之前運(yùn)行myisamchk。(然而,即使在這種情況下,應(yīng)通過(guò)使用DELAY_KEY_WRITE保證不丟失數(shù)據(jù),因?yàn)殛P(guān)鍵字信息總是可以從數(shù)據(jù)行產(chǎn)生)。如果你使用該特性,你應(yīng)用--myisam-recover選項(xiàng)啟動(dòng)服務(wù)器,為所有MyISAM表添加自動(dòng)檢查。

一點(diǎn)關(guān)于MySQL參數(shù)delay_key_write、myisam_recover_options的使用經(jīng)驗(yàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容