《MySQL技術內幕:InnoDB存儲引擎》讀書筆記一

1、InnoDB主要引擎特色數據庫

InnoDB是Windows發行版下默認的存儲引擎,它有如下特色:併發

1)、支持事務,主要面向事務處理(OLTP)方面的應用函數

2)、行鎖設計,支持外鍵高併發

3)、將數據放入一個邏輯的表空間性能

4)、使用多版本併發控制(MVCC)來得到高併發性,而且實現了SQL標準的四種隔離級別:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE,默認爲REPEATABLE級別;操作系統

5)、使用next-key locking策略避免幻讀現象;設計

6)、提供了插入緩衝、二次寫、自適應哈希索引、預讀等功能日誌

7)、表數據採用彙集方式索引

 

2、關鍵特性事務

1、插入緩衝

對於非彙集索引的插入或更新操做,不是每一次都直接插入索引頁。而是先判斷插入的非彙集索引頁是否在緩衝池中,若在則直接插入,不然先放入插入緩衝池中。

插入緩衝需知足兩個條件:

1)索引是輔助索引

2)索引不是惟一的

可經過命令SHOW ENGINE INNODB STATUS查看插入緩衝信息。

插入緩衝帶來的是性能的提升。

2、兩次寫

兩次寫帶來數據的可靠性;

解決部分寫失效問題:當數據庫正在從內存向磁盤寫一個數據頁時,數據庫宕機,從而致使這個頁只寫了部分數據

原理圖:

組成部分:

    內存中的doublewrite buffer,大小2M

    物理磁盤上共享表空間中連續的128頁,兩個區,共大小2M

工做過程:

         當緩衝池的髒頁刷新時,並不直接寫磁盤,而是先將髒頁拷貝到內存中的doublewrite buffer中,而後該buffer分兩次寫,每次寫入1M到共享表空間的物理磁盤上,而後當即調用fsync函數同步磁盤,避免緩衝寫帶來的問題。若是操做系統在將該頁寫入磁盤的過程當中崩潰了,則在恢復過程當中,InnoDB引擎可從共享表空間中的doublewrite中找到頁的一個副本,將其拷貝到表空間文件,而後重作日誌。

可以使用skip_innodb_doublewrite禁用兩次寫功能。

3、自適應哈希索引

InnoDB存儲引擎會監控對錶上的索引的查找,若觀察到創建哈希索引能夠帶來速度的提高則創建哈希索引。InnoDB會自動根據訪問的頻率和模式來爲某些頁創建哈希索引。

相關文章
相關標籤/搜索