MySQL參數(shù)DELAY_KEY_WRITE的詳細(xì)說(shuō)明
MySQL參數(shù)DELAY_KEY_WRITE的相關(guān)知識(shí)是本文我們主要要介紹的內(nèi)容,DELAY_KEY_WRITE是指在表關(guān)閉之前,將對(duì)表的update操作指跟新數(shù)據(jù)到磁盤(pán),而不更新索引到磁盤(pán),把對(duì)索引的更改記錄在內(nèi)存。這樣MyISAM表可以使索引更新更快。在關(guān)閉表的時(shí)候一起更新索引到磁盤(pán)。
使用: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 滿(mǎn)了一個(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)檢查。
關(guān)于MySQL參數(shù)DELAY_KEY_WRITE的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】






