MYSQL 存儲引擎

一 、什麼是存儲引擎?html

能夠理解爲處理數據的方式. 存儲引擎是基於表的,而不是基於數據庫的,好比create table order (id, int) engine = innodb;數據庫

MySQL的核心就是存儲引擎, 由於MySQL Server很是長的時間內都沒有作優化更新,更新的只有存儲引擎.併發

Innodb是MySQL使用的默認存儲引擎.高併發

Innodb支持事務, 面向在線事務處理(OLTP)方面的應用, 支持行鎖,支持外鍵優化

Innodb經過多版本併發控制MVCC得到高併發性,實現事務的四種隔離級別.spa

什麼是多版本併發控制呢? 每一行記錄的後面增長兩個隱藏列,記錄建立版本號和刪除版本號.htm

參考博客:  http://www.javashuo.com/article/p-sdilmkrq-dy.htmlblog

2、事務併發致使的問題索引

髒讀: 事務A讀取了事務B更新的數據, 而後B回滾操做,那麼A讀取到的數據是髒數據.事務

不可重複讀:事務 A 屢次讀取同一數據,事務 B 在事務A屢次讀取的過程當中,對數據做了更新並提交,致使事務A屢次讀取同一數據時,結果不一致. (how)

幻讀:系統管理員A將數據庫中全部學生的成績從具體分數改成ABCDE等級,可是系統管理員B就在此時插入了具體分數的記錄,當系統管理員A改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺同樣,這就叫幻讀. (how)

總結:不可重複讀的和幻讀很容易混淆,不可重複讀側重於修改,幻讀側重於新增或刪除.解決不可重複讀的問題只需鎖住知足條件的行,解決幻讀須要鎖表.

3、事務的四種隔離級別

Read uncommitted (讀未提交): 最低級別,任何狀況都沒法保證

Read committed (讀已提交): 可避免髒讀的發生

Repeatable read (可重複讀): 可避免髒讀、不可重複讀的發生

Serializable (串行化): 可避免髒讀、不可重複讀、幻讀的發生

MySQL默認的事務隔離級別是可重複讀(repeatable)

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

詳情參考:https://www.cnblogs.com/benshan/archive/2013/01/14/2859336.html

相關文章
相關標籤/搜索