Innodb關(guān)鍵特性

Innodb特性包括:
插入緩沖
兩次寫
自適應(yīng)哈希索引
異步IO
刷新相鄰頁

插入緩沖

使用 Innodb 存儲(chǔ)引擎的表數(shù)據(jù)文件本身就是按照主鍵組織的一顆 B+Tree,葉子節(jié)點(diǎn)存放表的行記錄數(shù)據(jù),也就是數(shù)據(jù)頁,這種所以方式被稱為聚集索引;
Insert Buffer (插入緩沖)

  • 1、并不是內(nèi)存中緩沖池的一部分,而是物理頁的一部分;
  • 2、優(yōu)化 2 級(jí)非唯一索引上插入操作的讀 IO;
  • 3、5.5 版本之后改名為 Change Buffer;
    注:為什么時(shí) 2 級(jí)非唯一索引
    1、自增主鍵是按照遞增的順序進(jìn)行插入的,不需要磁盤的隨機(jī)讀??;
    2、唯一索引插入時(shí),要去磁盤查找查找是否唯一,因此時(shí)插入緩沖失去作用;

兩次寫

提高 Innodb 的可靠性,保證數(shù)據(jù)寫入成功

使用場景描述:內(nèi)存與磁盤是以頁的形式進(jìn)行數(shù)據(jù)交互的,每一頁大小為 16K,當(dāng)內(nèi)存向磁盤更新一頁數(shù)據(jù)時(shí),如果只寫了 6K 的數(shù)據(jù),數(shù)據(jù)庫宕機(jī),剩余的 10K 數(shù)據(jù)則會(huì)丟失,可能會(huì)導(dǎo)致數(shù)據(jù)的不一致性;
double write 工作流程

image.png

double write 共分為兩部分,一部分是內(nèi)存中的 double write buffer,大小為 2MB,另一不部分是磁盤上的共享表空間中的連續(xù) 128 個(gè)頁,大小也是 2MB;

  • 1、當(dāng)數(shù)據(jù)緩沖池中的臟頁寫入磁盤時(shí),首先要復(fù)制到內(nèi)存的 double write buffer 中,并不是一下子刷新到磁盤的數(shù)據(jù)頁中;
  • 2、然后將 double write buffer 的數(shù)據(jù)分兩次寫入到磁盤共享表空間中(連續(xù)存儲(chǔ),順序?qū)?,性能很?,每次寫入 1MB;
  • 3、再講 double write buffer 中的數(shù)據(jù)刷新到實(shí)際的磁盤數(shù)據(jù)文件中;

崩潰恢復(fù)
如果操作系統(tǒng)在將頁寫入磁盤的過程中發(fā)生崩潰,在恢復(fù)過程中,innodb存儲(chǔ)引擎可以從共享表空間的doublewrite中找到該頁的一個(gè)最近的副本,將其復(fù)制到表空間文件,再應(yīng)用redo log,就完成了恢復(fù)過程。

自適應(yīng)哈希索引

Innodb 存儲(chǔ)引擎索引的實(shí)現(xiàn)是通過 B+Tree 來實(shí)現(xiàn)的,B 樹索引查找次數(shù)和樹的高度有關(guān),而哈希在一般的情況下只需要一次就可以找到數(shù)據(jù),時(shí)間復(fù)雜度為 O(1),因此 Innodb 在一些情況下,通過監(jiān)控索引頁的查詢,來判斷,如果建立哈希索引能夠提高查詢效率,則會(huì)建立哈希索引,此稱之為自適應(yīng)哈希索引;自適應(yīng)哈希是通過緩沖池的 B+ 樹構(gòu)造的,因此速度很快,并不是對整張表建立哈希;

異步IO

為了提高磁盤的操作性能
當(dāng)用戶發(fā)送了一個(gè) IO 請求后,可以立即發(fā)送另一個(gè) IO 請求,當(dāng)全部請求發(fā)送完畢后,等待所有的 IO 相應(yīng);與同步 IO 不同的就是,不用等待一個(gè) IO 請求響應(yīng)后再發(fā)出另一個(gè) IO 請求;異步 IO 多次請求放在一起排序,如果請求的數(shù)據(jù)頁在一起,就可以一次性讀出來,減少 IO 操作,提高速度;

刷新相鄰頁

當(dāng)刷新一個(gè)臟頁時(shí),存儲(chǔ)引擎會(huì)檢測該頁所在區(qū)的所有頁,如果是臟頁,則一起刷新,通過 AIO 將多個(gè) IO 合并為一個(gè)操作;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容