資料庫事務的隔離級別

2022-03-26 17:43:00 字數 515 閱讀 2653

sql92標準規定,資料庫事務有4個隔離級別,他們為了防止以下現象:

不可重複讀取(nonrepeatable read):乙個事務中,先讀取一批資料,後來再次讀取此批資料,卻發現資料有變更

不存在讀取(phantom read):乙個事務中,先執行一條查詢,再執行一次同一條件的查詢,發現結果集不一致

而資料庫事務的隔離級別為:

隔離級別

髒讀不可重複讀取

不存在讀取

未提交讀yy

y已提交讀ny

y可重複讀(mysql預設級別)nn

y序列化nn

n本人認為,基於資料庫事務的原子性、一致性,髒讀取可謂是重中之重,此點很容易讓人理解。

不可重複讀取、不存在讀取,初看之下彷彿一致。實際上不可重複讀取,資料庫只需要保證被操作的資料的隔離性;而不存在讀取,資料庫則需要保證整個表的資料的隔離性。所以他們的級別不同。

附:mysql預設的隔離級別是可重複讀。

oracle、sql server預設的隔離級別是已提交讀。

資料庫事務隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...

資料庫事務隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...

資料庫事務隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable 這四個級別可以逐個解決髒讀 不可重複讀 幻讀 這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted re...