未提交讀:讀尚未提交的數據 已提交讀:讀取已經提交的數據(oracle預設) 可重覆讀:保證同一事務多次讀取同樣記錄的結果一致(MySQL預設) 串列化:每次讀取都獲得表級共用鎖,讀寫相互阻塞 ...
MySQL的存儲引擎InnoDB支持事務,MyISAM不支持事物
資料庫事務的四大特性(ACID)
- 原子性(atomic) 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,這和前面兩篇博客介紹事務的功能是一樣的概念,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。
- 一致性(consistency) 一致性是指事務必須使資料庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行之後都必須處於一致性狀態。
拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那麼不管A和B之間如何轉賬,轉幾次賬,事務結束後兩個用戶的錢相加起來應該還得是5000,這就是事務的一致性。
- 隔離性(isolation) 隔離性是當多個用戶併發訪問資料庫時,比如操作同一張表時,資料庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離。
- 持久性(durability) 持久性是指一個事務一旦被提交了,那麼對資料庫中的數據的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。
MySQL中事務的隔離級別:
- 未提交讀:讀尚未提交的數據
- 已提交讀:讀取已經提交的數據(oracle預設)
- 可重覆讀:保證同一事務多次讀取同樣記錄的結果一致(MySQL預設)
- 串列化:每次讀取都獲得表級共用鎖,讀寫相互阻塞