數據庫系統概念讀書筆記1-事務隔離級別

Abstract

介紹數據事務隔離級別. 以mysql操作爲例進行介紹

操作步驟

mysql -uroot -p // 連接
start transaction;
set global transaction isolation level xxxxlevel; // 設置全局
set session transaction isolation level xxxlevel;  // 設置事務隔離級別
// do some ops
commit; // 提交事務
SELECT @@GLOBAL.transaction_isolation, @@SESSION.transaction_isolation; // 查看事務級別

事務隔離級別

可重複讀 Repeatable read

InnoDB默認. 基於事務開始的第一次讀的快照.

  • 是否可以看見當前事務插入數據? YES
  • 是否可以看見其他事務插入新的一行的未提交數據? NO
  • 是否可以看見其他事務插入的已提交數據? NO
  • 是否允許其他事務修改同一行數據? NO 無論當前事務是否提交. 會block後面嘗試修改的事務 如果當前未提交的話.

已提交讀 READ COMMITTED

只允許讀取已經提交的數據. 每次讀取時, 重新快照.

  • 是否可以看見當前事務插入數據? YES
  • 是否可以看見其他事務插入新的一行的未提交數據? NO
  • 是否可以看見其他事務插入新的一行的已提交數據? NO
  • 是否允許其他事務修改同一行數據? YES. 未提交時無法看見, 已提交可以看見.

未提交讀 READ UNCOMMITTED

允許讀取未提交的數據. 不被使用的. 不滿足ACID特性.

可串行化 Serializable

允許可串行化執行的級別. 比repeatable read更加嚴格的場景.

References

  1. mysql隔離級別
  2. mysql一致性讀
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章