ANSI SQL標(biāo)準(zhǔn)定義了4種事務(wù)隔離級別來避免3種數(shù)據(jù)不一致的問題。事務(wù)等級從高到低,分別為:
1.Serializable(序列化)
系統(tǒng)中所有的事務(wù)以串行地方式逐個執(zhí)行,所以能避免所有數(shù)據(jù)不一致情況。
但是這種以排他方式來控制并發(fā)事務(wù),串行化執(zhí)行方式會導(dǎo)致事務(wù)排隊,系統(tǒng)的并發(fā)量大幅下降,使用的時候要絕對慎重。
2.Repeatable read(可重復(fù)讀)
一個事務(wù)一旦開始,事務(wù)過程中所讀取的所有數(shù)據(jù)不允許被其他事務(wù)修改。
一個隔離級別沒有辦法解決“幻影讀”的問題。
因為它只“保護”了它讀取的數(shù)據(jù)不被修改,但是其他數(shù)據(jù)會被修改。如果其他數(shù)據(jù)被修改后恰好滿足了當(dāng)前事務(wù)的過濾條件(where語句),那么就會發(fā)生“幻影讀”的情況。
其他兩種事務(wù)隔離等級為:
3.Read Committed(已提交讀)
一個事務(wù)能讀取到其他事務(wù)提交過(Committed)的數(shù)據(jù)。
一個事務(wù)在處理過程中如果重復(fù)讀取某一個數(shù)據(jù),而且這個數(shù)據(jù)恰好被其他事務(wù)修改并提交了,那么當(dāng)前重復(fù)讀取數(shù)據(jù)的事務(wù)就會出現(xiàn)同一個數(shù)據(jù)前后不同的情況。
在這個隔離級別會發(fā)生“不可重復(fù)讀”的場景。
4.Read Uncommitted(未提交讀)
一個事務(wù)能讀取到其他事務(wù)修改過,但是還沒有提交的(Uncommitted)的數(shù)據(jù)。
數(shù)據(jù)被其他事務(wù)修改過,但還沒有提交,就存在著回滾的可能性,這時候讀取這些“未提交”數(shù)據(jù)的情況就是“臟讀”。
在這個隔離級別會發(fā)生“臟讀”場景。
- 云硬盤與對象存儲的區(qū)別有什么_對象存儲部署方式有哪些
- VPC哪家好_VPC網(wǎng)絡(luò)隔離_華為云VPC
- 華為云GaussDB數(shù)據(jù)庫_GaussDB基于什么開源軟件_高斯數(shù)據(jù)庫
- GaussDB登錄_GaussDB數(shù)據(jù)庫登錄_高斯數(shù)據(jù)庫登錄-華為云
- GaussDB數(shù)據(jù)庫入門_華為高斯數(shù)據(jù)庫_新建高斯數(shù)據(jù)庫_高斯語法_高斯數(shù)據(jù)庫協(xié)議
- RabbitMQ如何保證消息的可靠性_分布式消息系統(tǒng)_分布式消息RabbitMQ-華為云