MySQL(五)——緩存

緩存

? 當(dāng)我們?cè)L問一條記錄時(shí)旷祸,要把這個(gè)頁的數(shù)據(jù)都加載到內(nèi)存中并且緩存起來叉庐。在mysql啟動(dòng)時(shí)宏多,就像操作系統(tǒng)申請(qǐng)了一篇連續(xù)的內(nèi)存疯攒,緩沖池——buffer pool嗦随,默認(rèn)128M【闯撸可以通過innodb_buffer_pool_size來修改枚尼。池中的緩存頁默認(rèn)也是16kb

? 每一個(gè)緩存頁會(huì)有對(duì)應(yīng)的控制塊,占用一塊內(nèi)存(約為808字節(jié),5%)筷转,存放了控制信息(表空間編號(hào)姑原、頁號(hào)、緩存頁的地址呜舒、鏈表節(jié)點(diǎn)信息锭汛、鎖和LSN信息)

img

free鏈表

? 用來管理哪些緩存頁還沒有被占用,也就是空閑的,會(huì)把每一個(gè)空閑緩存頁對(duì)應(yīng)的控制塊加入到free鏈表中.每個(gè)節(jié)點(diǎn)占40字節(jié),是單獨(dú)申請(qǐng)的一塊內(nèi)存空間.每次加載了一個(gè)數(shù)據(jù)頁后,就從free鏈表中取出一個(gè)空閑的緩存頁袭蝗,并把該緩存頁對(duì)應(yīng)的控制塊的信息填上唤殴,然后從free鏈表中移除該控制塊節(jié)點(diǎn)。

緩存頁的哈希處理

? 查找buffer pool中的緩存頁通過表空間號(hào)+頁號(hào)作為key到腥,緩存頁是對(duì)應(yīng)的value朵逝。來組成一個(gè)哈希表

flush鏈表

? 如果一個(gè)緩存頁的數(shù)據(jù)被更新了,說明他是臟頁了乡范,會(huì)把這些臟頁對(duì)應(yīng)的控制塊加入到flush鏈表中去

LRU鏈表

? 如果緩存頁已經(jīng)用滿了配名,如何刪除掉不用的緩存頁呢。通過最近最少使用算法來淘汰(同redis)晋辆,所以需要維護(hù)一個(gè)LUR鏈表渠脉,當(dāng)剛加載到緩存池中時(shí),會(huì)放到鏈表的頭部瓶佳。每一次訪問就把對(duì)應(yīng)的控制塊移動(dòng)到頭部芋膘,這樣尾部的節(jié)點(diǎn)就是最近最少使用的緩存頁了。

? 問題:

  • 預(yù)讀:可能判斷會(huì)讀霸饲,但其實(shí)沒讀

  • 全表掃描为朋,會(huì)對(duì)緩沖池進(jìn)行好幾輪換血

    解決:

    • 把LRU鏈表按照比例分成冷熱兩塊,默認(rèn)冷鏈占37%厚脉,3/8左右习寸。
    • 這樣預(yù)讀就會(huì)放在old鏈的頭部
    • 全表掃描:首次加載的會(huì)被放到old區(qū)的頭部。且在首次加載后的一定時(shí)間間隔內(nèi)傻工,再次訪問改頁的數(shù)據(jù)融涣,不會(huì)把他放到y(tǒng)oung區(qū)(熱鏈)默認(rèn)1秒童番。
    • 只有在熱鏈區(qū)域的1/4后面,才會(huì)被移動(dòng)到LRU鏈表的頭部威鹿,就可以降低調(diào)整的頻率剃斧。

刷新臟頁到磁盤

? 后臺(tái)有線程專門把臟頁刷新到磁盤:

  • LRU鏈表的冷數(shù)據(jù)中刷新一部分頁面到磁盤。從尾部開始如果發(fā)現(xiàn)臟頁就刷新到磁盤
  • 從flush中刷新一部分到磁盤

多個(gè)buffer pool實(shí)例

? 如果多線程且并發(fā)高的情況下忽你,單一的pool會(huì)因?yàn)槎嗑€程加鎖而影響處理速度幼东,如果pool比較大的時(shí)候(大于1g,如果小于1g設(shè)置多個(gè)是沒用的)科雳,會(huì)拆分成若干個(gè)小pool根蟹,單獨(dú)申請(qǐng)內(nèi)存空間,這樣多線程并發(fā)訪問時(shí)可以提高并發(fā)能力糟秘。5.7.5之后可以動(dòng)態(tài)調(diào)整pool的大小简逮,這時(shí),重新申請(qǐng)尿赚,再把舊的拷過來太耗時(shí)散庶,所以會(huì)把連續(xù)申請(qǐng)改為chunk為單位申請(qǐng),所以一個(gè)pool是有若干個(gè)chunk組成凌净。包含了若干緩存頁的chunk悲龟。如果pool size變化的時(shí)候就通過chunk增減來完成。不需要重新申請(qǐng)?jiān)購(gòu)?fù)制

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冰寻,一起剝皮案震驚了整個(gè)濱河市须教,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斩芭,老刑警劉巖轻腺,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異划乖,居然都是意外死亡约计,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門迁筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耕挨,你說我怎么就攤上這事细卧。” “怎么了筒占?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵贪庙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我翰苫,道長(zhǎng)止邮,這世上最難降的妖魔是什么这橙? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮导披,結(jié)果婚禮上屈扎,老公的妹妹穿的比我還像新娘。我一直安慰自己撩匕,他們只是感情好鹰晨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著止毕,像睡著了一般模蜡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扁凛,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天忍疾,我揣著相機(jī)與錄音,去河邊找鬼谨朝。 笑死卤妒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叠必。 我是一名探鬼主播荚孵,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纬朝!你這毒婦竟也來了收叶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤共苛,失蹤者是張志新(化名)和其女友劉穎判没,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隅茎,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澄峰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辟犀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俏竞。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖堂竟,靈堂內(nèi)的尸體忽然破棺而出魂毁,到底是詐尸還是另有隱情,我是刑警寧澤出嘹,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布席楚,位于F島的核電站,受9級(jí)特大地震影響税稼,放射性物質(zhì)發(fā)生泄漏烦秩。R本人自食惡果不足惜垮斯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望只祠。 院中可真熱鬧兜蠕,春花似錦、人聲如沸铆农。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墩剖。三九已至猴凹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岭皂,已是汗流浹背郊霎。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爷绘,地道東北人书劝。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像土至,于是被迫代替她去往敵國(guó)和親购对。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349