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會自動根據訪問的頻率和模式來爲某些頁創建哈希索引。