成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQLBufferpool里的changebuffer是什么

小編給大家分享一下MySQL Buffer pool里的change buffer是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)與策劃設(shè)計,新都網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:新都等地區(qū)。新都做網(wǎng)站價格咨詢:18982081108

4 change buffer

4.1 基本概念

change buffer是一種特殊的數(shù)據(jù)結(jié)構(gòu),當(dāng)這些頁面不在緩沖池中時,這些高速緩存會將更改緩存到輔助索引頁面。可能由INSERT,UPDATE或DELETE操作(DML)導(dǎo)致的緩沖更改將在以后通過其他的讀取操作將頁加載到緩沖池中時合并。
MySQL Buffer pool里的change buffer是什么

相關(guān)免費學(xué)習(xí)推薦:mysql視頻教程

如上圖可見,change buffer用的是buffer pool里的內(nèi)存,所以不能無限增長。change buffer大小可通過參數(shù)innodb_change_buffer_max_size動態(tài)設(shè)置。
比如設(shè)置為50:change buffer的大小最多只能占用buffer pool的50%。

需更新一個數(shù)據(jù)頁時:

  • 頁在內(nèi)存,直接更新

  • 頁不在內(nèi)存,在不影響數(shù)據(jù)一致性下,InooDB會將這些更新操作緩存于change buffer,而無需從磁盤讀入頁

在下次查詢訪問該數(shù)據(jù)頁時,才將數(shù)據(jù)頁讀入內(nèi)存,然后執(zhí)行change buffer中與這個頁有關(guān)的操作。通過該方式就能保證該數(shù)據(jù)邏輯的正確性。

change buffer 實際上也是可持久化的數(shù)據(jù),即它不僅在內(nèi)存中有拷貝,也會被寫進磁盤。

4.2 merge

將change buffer中的操作應(yīng)用到原數(shù)據(jù)頁,得到最新結(jié)果的過程。

4.2.1 觸發(fā)時機

  1. 訪問該數(shù)據(jù)頁

  2. 系統(tǒng)后臺線程定期merge

  3. 數(shù)據(jù)庫正常關(guān)閉(shutdown)的過程

若能將更新操作先記錄在change buffer,減少讀盤,語句執(zhí)行速度便會明顯提升。且數(shù)據(jù)讀入內(nèi)存需要占用buffer pool,因此也能降低內(nèi)存占用,提高內(nèi)存利用率。

4.3 何時使用change buffer

  • 對于唯一索引,更新操作都要先判斷該操作是否違反唯一性約束:
    比如,要插入(4,400)記錄,要先判斷表中是否已存k=4記錄,就必須要將數(shù)據(jù)頁讀入內(nèi)存來判斷。若都已讀入內(nèi)存了,那直接更新內(nèi)存自然很快,沒必要使用change buffer。
    因此,唯一索引的更新不能使用change buffer,只有普通索引可使用

4.4 適用場景

難道普通索引的所有場景,使用change buffer都可加速嗎?

注意merge才是真正進行數(shù)據(jù)更新時刻,change buffer主要是將記錄的變更動作緩存。所以在一個數(shù)據(jù)頁做merge前,change buffer記錄變更越多(即該數(shù)據(jù)頁上要更新的次數(shù)越多),收益越大。

  • 寫多讀少業(yè)務(wù),頁面在寫完后馬上被訪問到的概率較小,change buffer使用效果最好。常見為賬單、日志類系統(tǒng)。

  • 寫后馬上查詢,將先新記錄在change buffer,但之后由于立即訪問該數(shù)據(jù)頁,又很快觸發(fā)merge,這樣的話隨機訪問IO次數(shù)不會減少,反而增加change buffer維護代價,change buffer起了副作用。

以上是“MySQL Buffer pool里的change buffer是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:MySQLBufferpool里的changebuffer是什么
標(biāo)題網(wǎng)址:http://jinyejixie.com/article46/peodeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、域名注冊、網(wǎng)站設(shè)計定制網(wǎng)站、全網(wǎng)營銷推廣、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
锡林郭勒盟| 南开区| 深泽县| 朝阳区| 华安县| 江津市| 遂宁市| 新乐市| 广河县| 武城县| 河池市| 井陉县| 五指山市| 文昌市| 巩留县| 海淀区| 彰化县| 安陆市| 宜川县| 昌都县| 东莞市| 临澧县| 桂阳县| 陆良县| 东莞市| 文安县| 金沙县| 尼木县| 长垣县| 静海县| 凤阳县| 旬阳县| 德庆县| 太仓市| 洪湖市| 贵南县| 龙井市| 漾濞| 资兴市| 永州市| 博白县|