水稻: 菜瓜,聽說最近你在複習mysql方面的知識,想請教一下mysql的事務?
菜瓜:嗯,最近剛剛看到。事務指的是mysql中不可拆分的業務單元,具有acid的屬性。
水稻: acid我知道啊,但是不太懂他的實現,你能說和我聊聊事務在資料庫底層是怎麼實現的嗎?
菜瓜:據我了解,不同的特性底層的實現不一樣,主要依賴兩種日誌和鎖來實現
水稻: 那還有一致性和隔離性呢?
菜瓜:一致性和隔離性可以放在一起說,隔離級別的選擇就是一致性和隔離性的權衡
水稻:鎖我知道,mvcc是什麼?
菜瓜:我們把資料庫的讀操作分為兩類,一是當前讀,使用鎖機制;一是快照讀,使用mvcc
快照讀 使用的是mvcc機制,就是多版本併發控制。
水稻:能不能仔細說說這個mvcc
菜瓜:可以,它的實現還是依賴undo log來做的
rr級別下利用該機制避免了幻讀
rc級別下每次都會讀取資料的最新記錄
總結:事務的永續性和原子性由redo log和undo log實現
隔離性和一致性的權衡由鎖機制和mvcc實現
部分內容為自己猜想,如有錯誤,歡迎指正!
參考文章
MySql事務隔離級別是啥?
今天去面試了一家公司,php的題目和linux的筆試題都答的還可以!但是資料庫這裡的筆試題感覺答的一塌糊塗啊!其中有一題是問到了mysql 的事務隔離級別。當時一看我就矇圈了,啥是事務隔離級別?這對於乙個phper來說,不知道這個東西應該是糗大了。這不回來趕緊學習一下!mysql事務隔離級別是啥?簡...
mysql隔離級別 MySQL 事務隔離級別
mysql innodb所提供的事務滿足acid的要求,事務是通過事務日誌中的redo log和undo log來實現原子性 undo log 一致性 undo log 永續性 redo log 事務通過鎖機制實現隔離性。1 事務隔離級別與實現read uncommitted 讀未提交 read c...
mysql事務隔離級別詳解 事務的隔離級別詳解
事務的隔離級別 在資料庫操作中,為了有效保證併發讀取資料的正確性,提出的事務隔離級別。問題的提出 資料庫是要被廣大客戶所共享訪問的,那麼在資料庫操作過程中很可能出現以下幾種不確定情況。更新丟失 兩個事務都同時更新一行資料,乙個事務對資料的更新把另乙個事務對資料的更新覆蓋了。這是因為系統沒有執行任何的...