InnoDB的三個關鍵特性

InnoDB的三個關鍵特性

InnoDB存儲引擎的三個關鍵特性:插入緩衝(insert buffer)、二次寫(double write)、自適應哈希索引(adaptive hash index)。

1、插入緩衝(insert buffer)的原理:

  對於非聚集索引的插入和更新,不是每一次直接插入索引頁中,而是首先判斷插入的非聚集索引頁是否在緩衝池中,如果在,則直接插入,否則,先放入一個插入緩衝區中。好似欺騙數據庫這個非聚集的索引已經插入到葉子節點了,然後再以一定的頻率執行插入緩衝和非聚集索引頁子節點的合併操作,這時通常能將多個插入合併到一個操作中,這就大大提高了對非聚集索引執行插入和修改操作的性能。

  插入緩衝使用的條件:

  1、索引是輔助索引;

  2、索引不是唯一的;

2、兩次寫(double write)
  兩次寫給innodb帶來的是可靠性,主要用來解決部分寫失敗(partial page write)doublewrite有兩部分組成,一部分是內存中的doublewrite buffer,大小爲2M,另外一部分就是物理磁盤上的共享表空間中連續的128個頁,即兩個區,大小同樣爲2M。當緩衝池的脹業刷新時,並不直接寫硬 盤,而是通過memcpy函數將髒頁先拷貝到內存中的doublewrite buffer,之後通過doublewrite buffer再分兩次寫,每次寫入1M到共享表空間的物理磁盤上,然後馬上調用fsync函數,同步磁盤。如下圖所示

 

以下命令可以查看doublewrite的使用 情況。

mysql> show global status like 'innodb_dblwr%';

slave上可以通過設置skip_innodb_doublewrite參數關閉兩次寫功能來提高性能,但是master上一定要開啓此功能,保證數據 安全。

3、自適應哈希索引(adaptive hash index)
  由於innodb不支持hash索引,但是在某些情況下hash索引的效率很高,於是出現了 adaptive hash index功能,innodb存儲引擎會監控對錶上索引的查找,如果觀察到建立hash索引可以提高性能的時候,則自動建立hash索引。可以通過 show engine innodb status\G來查看自適應哈西索引的使用情況。可以使用innodb_adaptive_hash_index來禁用和啓用hash索引,默認開啓。

 

轉載地址:http://www.cnblogs.com/benshan/archive/2013/01/14/2859336.html 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章