innodb-四種隔離級別

原文鏈接:https://blog.csdn.net/ignorewho/article/details/86546733

四種隔離級別


innodb有四種標準的隔離級別

READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.

默認隔離級別是REPEATABLE READ

 

用戶可以爲一個session中或所有的connection設置事務隔離級別屬性

 

 

innodb在不同的隔離級別下使用不同的鎖策略,使用默認的RR級別對ACID要求合規的重要數據可以基本滿足高度一致性。

 

 

如果對數據的一致性要求不高,可以使用較爲鬆式的策略,例如:RC、RU

 

innodb-SERIALIZABLE隔離級別是一種最嚴格的規則,一般用於XA事務或解決併發死鎖故障

 

 

RR級別


特性1.一致性讀的方式是在第一次讀時建立快照

特性2.在鎖定讀、update、delete時,加鎖方式依賴於查詢的方式,即是否是根據唯一索引查詢, 如果是則鎖定行,如果不是則可能會產生間隙鎖

 

RC級別:


特性1.一致性讀的方式是每次讀取和更新都會刷新快照

特性2.在鎖定讀、update、delete時,加鎖方式是隻鎖定索引記錄,不鎖間隙

特性3.在RC級別下binlog模式只支持row-based,即使配置了binlog_format=MIXED,實際也是採用row-based

特性4.在RC級別下,根據非索引字段更新,只會鎖定where條件下對應的行,不會鎖定全錶行記錄

在RC級別下,因爲沒有間隙鎖的保護,這時會出現幽靈問題,也可以叫做幻讀

RC級別作用和啓用innodb_locks_unsafe_for_binlog配置類似,但兩者也有區別:
1.innodb_locks_unsafe_for_binlog可以被設置成全局/所有session,但RC級別可以設置爲所有session/單個session

2.innodb_locks_unsafe_for_binlog只能在mysql服務啓動前設置,RC級別可以在服務運行時設置

 

RU級別:


特性.讀取不具有一致性,存在髒讀問題

 

 

SERIALIZABLE級別


特性.在atuocommit關閉的情況下,所有的select操作都會加共享鎖

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