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

2021-08-31 16:45:17 字數 663 閱讀 2638

在標準sql規範中,定義了4個事務隔離級別,不同的隔離級別對事務的處理不同:

隔離級別越高,越能保證資料的完整性和一致性,但是對併發效能的影響也越大。對於多數應用程式,可以優先考慮把資料庫系統的隔離級別設為read committed,它能夠避免髒讀取,而且具有較好的併發效能。儘管它會導致不可重複讀、虛讀和第二類丟失更新這些併發問題,在可能出現這類問題的個別場合,可以由應用程式採用悲觀鎖或樂觀鎖來控制。

通過前面的介紹已經知道,通過選用不同的隔離等級就可以在不同程度上避免前面所提及的在事務處理中所面臨的各種問題。所以,資料庫隔離級別的選取就顯得尤為重要,在選取資料庫的隔離級別時,應該注意以下幾個處理的原則:

假設使用了「版本資料」,hibernate會自動使用版本資料。hibernate的一級session快取和版本資料已經為你提供了「可重複讀取隔離」絕大部分的特性。特別是,版本資料可以防止二次更新丟失的問題,一級session快取可以保證持久載入資料的狀態與其他事務對資料的修改隔離開來,因此如果使用對所有的資料庫事務採用授權讀取隔離和版本資料是行得通的。

「可重複讀取」為資料庫查詢提供了更好的效率(僅對那些長時間的資料庫事務),但是由於幻影讀取依然存在,因此沒必要使用它(對於web應用來說,一般也很少在乙個資料庫事務中對同乙個表查詢兩次)。

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

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

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

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

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

級別 解釋讀未提交 read uncommitted 如果乙個事務已經開始寫資料,則另外乙個事務則不允許同時進行寫操作,但允許其他事務讀此行資料。讀已經提交的 read committed 讀取資料的事務允許其他事務繼續訪問該行資料,但是未提交的寫事務將會禁止其他事務訪問該行。可重複讀 repeat...