SQL的隔離級別

2021-08-29 11:03:48 字數 691 閱讀 5526

資料庫的隔離級別主要是為讀操作定義保護級別的;對於修改寫操作,無論哪種隔離級別都可以保證寫操作的正確執行。sql標準為三種***:

dirty reads: 事務t2提交了資料,事務t1這時讀取了t2提交的資料,t2發生異常rollback,那麼t1讀取的資料就是有問題的資料,是dirty read。

unrepeatable reads:事務t1讀取資料以後,事務t2修改了t1讀取的資料,事務t1以同樣的查詢從資料庫讀取資料,就會發現和上一次讀取的不一致,所以稱為unrepeatable reads。

phantom reads:事務t1查詢資料庫並返回資料,事務t2插入了新的資料,事務t1一同樣的查詢讀取資料庫資料,發現會多出一些資料,所以稱為phantom reads。

設定合適的資料庫事務隔離級別可以防止上面問題的發生,但是隔離級別越高併發性越差一般會設定為read-committed

dirty reads

unrepeatable reads

phantom  reads

read uncommitedy

yyread commitedn

yyrepeatable readn

nyserializablennn

sql 隔離級別

begin trybegin tran insert into dbo.transtesttable values 66,66 update dbo.transtesttable set name 77 where id 66 raiserror error raised in try block....

SQL 隔離級別

在sql標準中定義了四種隔離級別,每一種級別都規定了乙個事務中所做的修改,哪些在事務內和事務間是可見的,哪些是不可見的。較低階別的隔離通常可以執行更高的併發,系統的開銷也更低。簡單的介紹四種隔離級別 1 read uncommitted 未提交讀 在read uncommitted級別,事務中的修改...

SQL 事務隔離級別

髒讀 包含未提交資料的讀。例如,事務1 更改了某行。事務2 在事務1 提交更改之前讀取已更改的行。如果事務1 回滾更改,則事務2 便讀取了邏輯上從未存在過的行。不可重複讀取 當某個事務不止一次讀取同一行,並且乙個單獨的事務在兩次 或多次 讀取之間修改該行時。因為在同乙個事務內的多次讀取之間修改了該行...