資料庫事務(2)資料庫的隔離級別

2021-07-16 17:07:52 字數 796 閱讀 2787

以上的4種問題(更新丟失、髒讀、不可重複讀、幻讀)都和事務的隔離級別有關。通過設定事務的隔離級別,可以避免上述問題的發生。

以操作同一行資料為前提,讀事務 允許 其他讀事務和寫事務,未提交的寫事務 禁止 其他寫事務(但允許其他讀事務)。

此隔離級別可以防止 更新丟失 ,但不能防止 髒讀、不可重複讀、幻讀 。

此隔離級別可以通過「排他寫鎖」實現。

以操作同一行資料為前提,讀事務 允許 其他讀事務和寫事務,未提交的寫事務 禁止 其他讀事務和寫事務。

此隔離級別可以防止 更新丟失、髒讀 ,但不能防止 不可重複讀、幻讀 。

此隔離級別可以通過「瞬間共享讀鎖」和「排他寫鎖」實現。

以操作同一行資料為前提,讀事務 禁止 其他寫事務(但允許其他讀事務),未提交的寫事務 禁止 其他讀事務和寫事務。

此隔離級別可以防止 更新丟失、髒讀、不可重複讀 ,但不能防止 幻讀 。

此隔離級別可以通過「共享讀鎖」和「排他寫鎖」實現。

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

此隔離級別可以防止 更新丟失、髒讀、不可重複讀、幻讀 。

如果僅僅通過「行級鎖」是無法實現事務序列化的,必須通過其他機制保證新插入的資料不會被剛執行查詢操作的事務訪問到。

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

資料庫事務隔離級別

資料庫事務的隔離級別有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...