Mysql事務特性和Mysql事務隔離級別

事務執行異常處理、提交、回滾:https://www.cnblogs.com/xsj1989/p/17774735.html
Mysql 默認的執行引擎是innoDB,支持事務,行級鎖定和外鍵。
Mysql事務特性
1.原子性:事務是一個不可分割的整體,要麼全部成功,要麼全部失敗。
2.一致性:系統從一個正確狀態遷移到另一個正確狀態。
3.隔離性:每個事務的對象對其他事務的操作對象互相分離,事務提交前,對其他事務不可見。
4.持久性:事務一旦提交,其結果是永久性的。

事務的隔離級別
Isolate,顧名思義就是將事務與另一個事務隔離開,爲什麼要隔離呢?如果一個事務正在操作的數據被另一個事務修改或刪除了,最後的執行結果可能無法達到預期。如果沒有隔離性還會導致其他問題。
1.讀未提交(Read uncommitted)
一個事務可以讀取另一個未提交事務的數據,最低級別,任何情況都無法保證,會造成髒讀。
2.讀已提交(Read committed)
一個事務要等另一個事務提交後才能讀取數據,可避免髒讀的發生,會造成不可重複讀。
3.可重複讀(Repeatable read) 系統默認級別
就是在開始讀取數據(事務開啓)時,不再允許修改操作,可避免髒讀、不可重複讀的發生,但是會造成幻讀。
4.串行(Serializable)
是最高的事務隔離級別,在該級別下,事務串行化順序執行,可以避免髒讀、不可重複讀與幻讀。但是這種事務隔離級別效率低下,比較耗數據庫性能,一般不使用。
Mysql的默認隔離級別是Repeatable read。

事務的隔離級別-操作

-- 查看隔離級別 
show variables like '%isolation%’; 

-- 設置隔離級別
/*
set session transaction isolation level 級別字符串
級別字符串:read uncommitted、read committed、repeatable read、serializable
*/
-- 設置read uncommitted
set session transaction isolation level read uncommitted;
 
-- 設置read committed
set session transaction isolation level read committed;
 
-- 設置repeatable read
set session transaction isolation level repeatable read;
 
-- 設置serializable
set session transaction isolation level serializable;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章