SQL標準之事務隔離的四個級別實現方式

2021-09-11 21:12:35 字數 814 閱讀 3232

級別

解釋讀未提交(read uncommitted)

如果乙個事務已經開始寫資料,則另外乙個事務則不允許同時進行寫操作,但允許其他事務讀此行資料。

讀已經提交的(read committed)

讀取資料的事務允許其他事務繼續訪問該行資料,但是未提交的寫事務將會禁止其他事務訪問該行。

可重複讀(repeatable read)

讀取資料的事務將會禁止寫事務(但允許讀事務),寫事務則禁止任何其他事務

可序列化(serializable)

提供嚴格的事務隔離。它要求事務序列的執行,事務只能乙個接著乙個地執行,不能併發執行。

在mysql中預設提供的是事務隔離級別是可重複讀,而其他大多數的資料庫系統提供的是讀已提交。可重複讀和讀已提交的區別舉個例子:

read repeatable:開啟乙個事務,在該事務的時刻a時讀乙個資料,而後在時刻b時再次讀,這2次讀的資料是一致的,因為在此期間如果有其他的事務中含有對該行資料的寫請求時,由於讀取資料的事務將會禁止寫事務(但允許讀事務),所以保證了對該資料的可重複性的讀取。

read committed:開啟乙個事務,在該事務的時刻a時讀乙個資料,而後在時刻b時再次讀,這2次讀的資料是不一致的,因為在這2次讀之間可能有其他事務更改這個資料,並且將他們本身提交了(讀取資料的事務允許其他事務繼續訪問該行資料),那麼根據讀已提交的定義,此行資料在b時刻的讀取是有效的,但是由於被其他的事務所修改了,所以在該事務中,時刻a和時刻b的讀取結果是不一樣的。

當然這些事務隔離級別都是設定的,只是不同的資料庫系統其預設選擇的事務隔離級別不一樣。需要注意一下。

標準SQL規範中定義的四個事務隔離級別

在標準sql規範中,定義了4個事務隔離級別,不同的隔離級別對事務的處理不同 未授權讀取 read uncommitted 允許髒讀取,但不允許更新丟失。如果乙個事務已經開始寫資料,則另外乙個資料則不允許同時進行寫操作,但允許其他事務讀此行資料。該隔離級別可以通過 排他寫鎖 實現。授權讀取 read ...

標準SQL規範中定義的四個事務隔離級別

在標準sql規範中,定義了4個事務隔離級別,不同的隔離級別對事務的處理不同 未授權讀取 read uncommitted 允許髒讀取,但不允許更新丟失。如果乙個事務已經開始寫資料,則另外乙個資料則不允許同時進行寫操作,但允許其他事務讀此行資料。該隔離級別可以通過 排他寫鎖 實現。授權讀取 read ...

標準SQL規範中定義的四個事務隔離級別

在標準sql規範中,定義了4個事務隔離級別,不同的隔離級別對事務的處理不同 隔離級別越高,越能保證資料的完整性和一致性,但是對併發效能的影響也越大。對於多數應用程式,可以優先考慮把資料庫系統的隔離級別設為read committed,它能夠避免髒讀取,而且具有較好的併發效能。儘管它會導致不可重複讀 ...