mysql innodb 行鎖 說明

# 查看 數據庫默認的隔離級別
select @@tx_isolation;

# 設置隔離級別
set tx_isolation = "read-uncommitted"

/*
隔離級別分類
READ-UNCOMMITTED    該事物隔離級別可讀取其它事物未提交的結果
READ-COMMITTED      該事物隔離級別只會讀取已提交的數據,在事務中已更改但未讀取的數據不會讀取
REPEATABLE-READ     該事務隔離級別只會讀取已提交的結果,與READ-COMMITTED不同的是,repeatable-read在開啓事務的情況下,
					同一條件的查詢返回的結果永遠是一致的,無論其它事物是否提交了新的數據
SERIALIZABLE        種隔離級別和repeatable-read類似,只會讀取其它事物已提交的內容,有一點不同的地方在於,
					如果autocommit爲false,那麼每一條select語句會自動被轉化爲select ... lock in share mode.這樣出現一些阻塞情況

*/


# 鎖必須爲主鍵 或唯一索引  innodb行鎖  

# 共享鎖   S 鎖  讀鎖
select * from table where id=1 lock in share mode;

# 排他鎖   X 鎖  寫鎖
select * from table where id=1 for update

# 意向共享鎖  IS
# 
# 意向排他鎖  IX
# 
# 自增鎖
# 
# 臨建鎖  < > between  有匹配記錄   範圍鎖 記錄查詢上下外邊界  左開右閉
# 
# 間隙鎖  無匹配記錄   範圍鎖 記錄查詢上下外邊界  左開右閉
# 
# 記錄鎖
# 

# 鎖對應隔離級別
# 幻讀     臨建鎖
# 
# 不可重複讀    S鎖
# 
# 髒讀    X鎖

 

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