十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
下文內(nèi)容主要給大家?guī)鞩nnoDB后臺(tái)線程threads講析,這里所講到的知識(shí),與書籍略有不同,都是創(chuàng)新互聯(lián)專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗(yàn)分享價(jià)值,希望給廣大讀者帶來幫助。
master thread
核心的后臺(tái)線程,主要負(fù)責(zé)將緩沖池中的數(shù)據(jù)異步刷新到磁盤,保證數(shù)據(jù)的一致性,包括臟頁的刷新、合并插入緩沖、undo頁的回收等。
Master thread在主循環(huán)中,分兩大部分操作,每秒鐘的操作和每10秒鐘的操作:
每秒一次的操作包括:
1、日志緩沖刷新到磁盤,即使這個(gè)事務(wù)還沒有提交(總是),這點(diǎn)解釋了為什么再大的事務(wù)commit時(shí)都很快;
2、合并插入緩沖(可能),合并插入并不是每秒都發(fā)生,InnoDB會(huì)判斷當(dāng)前一秒內(nèi)發(fā)生的IO次數(shù)是否小于5,如果是,則系統(tǒng)認(rèn)為當(dāng)前的IO壓力很小,可以執(zhí)行合并插入緩沖的操作。
3、至多刷新100個(gè)InnoDB的緩沖池的臟頁到磁盤(可能),這個(gè)刷新100個(gè)臟頁也不是每秒都在做。
每10秒一次的操作包括:
1、刷新100個(gè)臟頁到磁盤(可能);
2、合并至多5個(gè)插入緩沖(總是);
3、將日志緩沖刷新到磁盤(總是);
4、刪除無用的undo頁(總是);
5、產(chǎn)生一個(gè)檢查點(diǎn)(checkpoing);
IO thread
主要負(fù)責(zé)IO請(qǐng)求的回掉處理。分別為write、read、insert buffer和log IO thread。線程數(shù)量可以通過參數(shù)進(jìn)行調(diào)整。5.6以后的版本可以通過innodb_write_io_threads和innodb_read_io_threads來限制讀寫線程,而在5.6版本以前,只有一個(gè)參數(shù)innodb_file_io_threads來控制讀寫總線程數(shù)。
purge thread
負(fù)責(zé)回收已經(jīng)使用并分配的undo頁,purge操作默認(rèn)是由master thread中完成的,為了減輕master thread的工作,提高cpu使用率以及提升存儲(chǔ)引擎的性能。用戶可以在參數(shù)文件中添加如下命令來啟動(dòng)獨(dú)立的purge thread。
innodb_purge_threads=1
從innodb1.2版本開始,可以指定多個(gè)innodb_purge_threads來進(jìn)一步加快和提高undo回收速度。
page cleaner thread
執(zhí)行臟頁刷新操作。講臟頁刷盤。
對(duì)于以上關(guān)于InnoDB后臺(tái)線程threads講析,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們創(chuàng)新互聯(lián)的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R(shí)更新。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。