溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MYSQL change buffer的原理說(shuō)明

發(fā)布時(shí)間:2021-09-16 10:55:57 來(lái)源:億速云 閱讀:199 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“MYSQL change buffer的原理說(shuō)明”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“MYSQL change buffer的原理說(shuō)明”吧!

關(guān)于MYSQL 的change buffer 的說(shuō)一說(shuō),為何,因?yàn)樗梢约铀倌愕膶?xiě)操作,意思就是 insert  update delete 等操作,尤其是你的表有一堆索引的情況下,那必須要進(jìn)行特殊的設(shè)置。

可能馬上有一個(gè)聲音,為什么是表有一堆索引的情況下,才要有特殊的設(shè)置。

1 索引與表是緊密的關(guān)系,插入,更新,刪除一條記錄,就會(huì)觸發(fā)與表有關(guān)系的索引的操作,你可以將他們看做一個(gè)事務(wù),如果其中有任何一個(gè)對(duì)索引的操作失敗,則你的數(shù)據(jù)對(duì)表的操作也應(yīng)該會(huì)失敗。

2 對(duì)于表附加的索引的操作必然影響對(duì)源表的數(shù)據(jù)的操作速度,而DML操作會(huì)影響數(shù)據(jù)的讀取和事務(wù)隔離性相關(guān)的性能,然后引起連鎖反應(yīng),表插入的,更改的,刪除的,慢了,則表的SELECT 的性能也必然受到影響。

3 當(dāng)對(duì)表執(zhí)行插入、更新和刪除操作時(shí),索引(非聚集索引)列的值通常是無(wú)序的,這需要大量的I/O來(lái)更新輔助索引。當(dāng)相關(guān)頁(yè)不在緩沖池中時(shí),更改緩沖區(qū)將更改緩存到索引,從而通過(guò)不立即從磁盤(pán)讀入頁(yè)來(lái)避免昂貴的I/O操作。當(dāng)頁(yè)面加載到緩沖池中時(shí),將合并已緩存的更改,然后將更新后的頁(yè)面刷新到磁盤(pán)。

帶來(lái)的好處,如果MYSQL 承擔(dān)大量的DML操作,則change buffer是必不可少的,他的存在就是盡量減小I/O的消耗,通過(guò)內(nèi)存進(jìn)行數(shù)據(jù)的合并操作,將多次操作操作盡量變?yōu)樯倭康腎/O操作。帶來(lái)的壞處,就是change buffer 會(huì)使用innodb_buffer的空間,所以如果你內(nèi)存少,那就....... 默哀3分鐘。

說(shuō)道這個(gè)東西,那自然必須要在MY.CNF 中調(diào)整一下參數(shù)配置。

具體有兩個(gè)參數(shù)

innodb_change_buffering  

這個(gè)參數(shù)決定了你的change buffer的用途,你是要吃咸的還是甜的,都在這里面了。具體的選擇項(xiàng)

none

inserts

deletes

changes

purges

all

innodb_change_buffer_max_size

另一個(gè)選擇項(xiàng)是對(duì) buffer_pool 中的內(nèi)存進(jìn)行百分比的設(shè)置,默認(rèn)是 25% 最大你可以設(shè)置 50% 

innodb_change_buffering_debug

對(duì)于change buffer 如果造成問(wèn)題,我們也需要第一時(shí)間從 ERRORLOG 匯總獲知,所以建議至少設(shè)置為 1

下面是MYSQL 不關(guān)于這部分的代碼(有時(shí)間還真的好好看看C++,要不看代碼屬于白癡的水平),

1  UNIV_PAGE_SIZE  是 數(shù)據(jù)頁(yè)的大小

2  buf_pool_get_curr_size 是 當(dāng)前的 innodb_buffer_pool 的大小

最后最大的設(shè)置得到應(yīng)該是以頁(yè)面大小為單位的塊的百分比。

MYSQL change buffer的原理說(shuō)明

感謝各位的閱讀,以上就是“MYSQL change buffer的原理說(shuō)明”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)MYSQL change buffer的原理說(shuō)明這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI