InnoDB存儲(chǔ)引擎體系架構(gòu)

(本片博文是《MySQL技術(shù)內(nèi)幕 InnoDB存儲(chǔ)引擎第二版》的讀書筆記)
這是《MySQL技術(shù)內(nèi)幕 InnoDB存儲(chǔ)引擎》一書中的InnoDB存儲(chǔ)引擎體系結(jié)構(gòu)圖。


1.PNG

多線程

InnoDB存儲(chǔ)引擎是多線程的模型,因此其后臺(tái)有多個(gè)不同的線程孙咪,負(fù)責(zé)處理不同的任務(wù):

  1. Master Thread
    一個(gè)核心的后臺(tái)線程备绽,主要負(fù)責(zé)將緩沖池中的數(shù)據(jù)異步刷新到磁盤贡这,保證
    數(shù)據(jù)的一致性戈泼,包括臟頁的刷新南片、合并插入緩沖睡陪、UNDO頁的回收等寺渗。
  2. IO Thread
    InnoDB存儲(chǔ)引擎大量使用了AIO(Async IO)來處理寫IO請(qǐng)求匿情,這樣極大地提高了數(shù)據(jù)庫的性能。IO Thread的工作主要是負(fù)責(zé)這些IO請(qǐng)求的回調(diào)處理信殊。
  3. Purge Thread
    事務(wù)被提交后炬称,其所使用的undolog可能不再需要,因此需要Purge Thread來回收已經(jīng)使用并分配的undo頁鸡号。
  4. Page Cleaner Thread
    Page Cleaner Thread是在InnoDB1.2.x版本中引入的转砖。其作用是將之前版本中臟頁的刷新操作都放入到單獨(dú)的線程中來完成。目的是為了減輕原Master Thread的工作及對(duì)于用戶查詢線程的阻塞鲸伴,進(jìn)一步提高InnoDB存儲(chǔ)引擎的性能府蔗。

內(nèi)存

  1. 緩沖池
    InnoDB存儲(chǔ)引擎的基于磁盤存儲(chǔ)的,并將其中的記錄按照頁的方式進(jìn)行管理汞窗。因此可將其視為Disk-base Database姓赤,由于CPU速度與磁盤速度之間的鴻溝,基于磁盤的數(shù)據(jù)庫系統(tǒng)通常使用緩沖池技術(shù)來提高數(shù)據(jù)庫的整體性能仲吏。
    緩沖池簡(jiǎn)單來說就是一塊內(nèi)存區(qū)域不铆,通過內(nèi)存的速度來彌補(bǔ)磁盤速度對(duì)數(shù)據(jù)庫性能的影響。在數(shù)據(jù)庫中進(jìn)行讀取頁的操作裹唆,首先將從磁盤讀到的頁存放在緩沖池中誓斥,這個(gè)過程稱為“FIX”在緩沖池中。下一次再讀相同的頁時(shí)许帐,首先判斷該頁是否在緩沖池中劳坑。若在緩沖池中,稱該頁在緩沖池中被命中成畦,直接讀取該頁距芬。否則,讀取磁盤上的頁循帐。(和OS中緩存有些類似框仔?)
    對(duì)于頁修改操作,首先修改在緩沖池中的頁拄养,然后再以一定的頻率刷新到磁盤上离斩。這里需要注意的是,頁從緩沖池刷新回磁盤并不是在每次頁發(fā)生更改時(shí)觸發(fā)瘪匿,而是通過一種叫Checkpoint的機(jī)制刷新回磁盤跛梗。這樣最也是為了提高數(shù)據(jù)庫的整體性能。
    緩沖池的大小會(huì)直接影響到數(shù)據(jù)庫的性能柿顶,通過配置緩沖池參數(shù)innodb_buffer_pool_size可以來設(shè)置緩沖池大小茄袖。
    不能簡(jiǎn)單的認(rèn)為緩沖池只是緩沖索引頁和數(shù)據(jù)頁操软,它們只是占緩沖池很大一部分而已嘁锯,其他比如undo頁、插入緩沖、自適應(yīng)哈希索引家乘、InnoDB存儲(chǔ)的鎖信息蝗羊、數(shù)據(jù)字典信息等都會(huì)在緩沖池中緩存,以下是InnoDB存儲(chǔ)引擎中內(nèi)存的結(jié)構(gòu)情況:
2.PNG

InnoDB1.0.x版本開始仁锯,就允許有多個(gè)緩沖池實(shí)例耀找。每個(gè)頁根據(jù)哈希值平均到不同緩沖池實(shí)例中。這樣就減少了數(shù)據(jù)庫內(nèi)部的資源競(jìng)爭(zhēng)业崖,增加數(shù)據(jù)庫的并發(fā)處理能力野芒。

LRU List

通常來說,數(shù)據(jù)庫中的緩沖池是通過LRU(Latest Recent Used双炕,最近最少使用)算法來進(jìn)行管理狞悲。訪問最頻繁的頁在LRU列表的前端,而最少使用的頁在LRU列表的尾端妇斤。緩沖池滿時(shí)摇锋,首先釋放尾端頁。

InnoDB存儲(chǔ)引擎中站超,用優(yōu)化過的LRU算法對(duì)緩沖池進(jìn)行管理荸恕。LRU列表中加入了midpoint位置,新讀取到的頁死相,雖然是新頁融求,但并不直接放入到LRU列表的首部,而是放入到LRU列表的midpoint位置媳纬。(這個(gè)算法在InnoDB存儲(chǔ)引擎中稱為midpoint insertion strategy)双肤。默認(rèn)配置下,該位置在LRU列表的5/8處钮惠,可由參數(shù)innodb_old_blocks_pct控制茅糜。midpoint之后的列表稱為old列表,之前的列表稱為new列表素挽∶镒福可以簡(jiǎn)單地理解為new列表中的頁都是最為活躍的熱點(diǎn)數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末预明,一起剝皮案震驚了整個(gè)濱河市缩赛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撰糠,老刑警劉巖酥馍,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阅酪,居然都是意外死亡旨袒,警方通過查閱死者的電腦和手機(jī)汁针,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砚尽,“玉大人施无,你說我怎么就攤上這事”毓拢” “怎么了猾骡?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敷搪。 經(jīng)常有香客問我兴想,道長,這世上最難降的妖魔是什么赡勘? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任襟企,我火速辦了婚禮,結(jié)果婚禮上狮含,老公的妹妹穿的比我還像新娘顽悼。我一直安慰自己,他們只是感情好几迄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布蔚龙。 她就那樣靜靜地躺著,像睡著了一般映胁。 火紅的嫁衣襯著肌膚如雪木羹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天解孙,我揣著相機(jī)與錄音坑填,去河邊找鬼。 笑死弛姜,一個(gè)胖子當(dāng)著我的面吹牛脐瑰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播廷臼,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苍在,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了荠商?” 一聲冷哼從身側(cè)響起寂恬,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莱没,沒想到半個(gè)月后初肉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饰躲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年牙咏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了井佑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肾档。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡黍瞧,死狀恐怖躬柬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盯拱,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布例嘱,位于F島的核電站狡逢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拼卵。R本人自食惡果不足惜奢浑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腋腮。 院中可真熱鬧雀彼,春花似錦、人聲如沸即寡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聪富。三九已至莺丑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間墩蔓,已是汗流浹背梢莽。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奸披,地道東北人昏名。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像阵面,于是被迫代替她去往敵國和親葡粒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容