BoltDB 事務實現
BoltDB 支持多讀單寫方式的并發級別
事務操作會鎖表
它的 MVCC 為 2 個版本,當前版本和正在寫的版本
多讀:可以并發讀當前版本
單寫(串行寫):寫時拷貝當前 B+ 樹,構建新 B+ 樹,最后原子切 meta 頁
MySQL InnoDB 事務實現
MySQL InnoDB 支持多讀多寫方式的并發級別
MySQL 事務不會鎖表,不同行記錄的寫操作,可以并發(某些不行,注意間隙鎖)
它的 MVCC 為 N 個版本,粒度是按行可以有多個版本
多讀:一致性非鎖定讀,不同事務隔離級別讀取不同行版本數據
多寫:不同行的寫,可以并發
MySQL InnoDB 事務特點
MySQL InnoDB 最牛逼的地方是:
- 多個事務,會同時修改 B+ 樹
- 對相同行的修改,才會被鎖阻塞
也就是說,MySQL 忙時, B+ 樹其實時刻是不一致狀態
這里主要靠 undo 日志提供的 MVCC 機制,提供視圖上的一致
這也是 4 種事務隔離級別產生的原因