InnoDB的關鍵特性(不看後悔,一看必懂)
阿新 • • 發佈:2018-12-20
1.插入緩衝,主要是針對非主鍵索引的插入和更新操作,如果是主鍵索引,順序的插入就可以了,資料頁的存放還是主鍵id的執行順序,但是非主鍵索引,葉子節點的插入不再是順序的,這個時候需要離散的訪問非聚集索引,插入效能會變得很低。
插入緩衝的作用就是,對於非聚集索引的插入和更新,不是每一次直接插入索引頁中,而是先判斷非聚集索引頁是否裡,如果存在,那麼直接插入,不存在就先插入到緩衝池中,然後以一定的頻率合併緩衝區和索引頁。
插入緩衝使用滿足兩個條件,1,非聚集索引, 2,索引不是唯一的
插入緩衝存在一個問題,在寫密集的時候,插入緩衝會佔用過多緩衝池記憶體,預設情況下最大可以佔用1/2緩衝池記憶體。
2.兩次寫
如果說插入緩衝給InnoDB帶來的是效能,那麼兩次寫給InnoDB帶來的就是資料的可靠性,如果在寫一個頁的時候,伺服器宕機,那麼就會導致這個頁只寫了一部分的情況,我們稱這種情況叫做寫失效,兩次寫就是準備一個副本,當寫失效的時候,通過寫副本來恢復原來的資料,在進行重做,至於如果進行,InnoDB儲存引擎提供了一個兩次寫緩衝,大小為2M,另一個就是物理磁碟上共享表空間中連續的128個頁。
當作業系統將頁寫入磁碟的時候宕掉了,那麼在恢復過程中,InnoDB儲存引擎可以從共享表空間中的doublewrite中找到該頁的副本,然後將副本拷貝到表空間,在做重用日誌。
3.自適應雜湊索引
雜湊是一種非常快的查詢方法。官方的資料是,使用自適應雜湊索引後,讀取和寫入資料可以提高2倍,對於輔助索引的的連結操作,效能可以提高至5倍