語法:set transaction isolation level read committed。
資料庫預設的是兩個會話事務之間是提交讀。
read committed指定語句不能讀取已由其他事務修改但尚未提交的資料。 這樣可以避免髒讀。 其他事務可以在當前事務的各個語句之間更改資料,從而產生不可重複讀取和虛擬資料。 該選項是 sql server 的預設設定。
read committed 的行為取決於 read_committed_snapshot 資料庫選項的設定:
如果將 read_committed_snapshot 設定為 on,則 資料庫引擎會使用行版本控制為每個語句提供乙個在事務上一致的資料快照,因為該資料在語句開始時就存在。 不使用鎖來防止其他事務更新資料。
修改會話指令碼:
--宣告資料庫引用
use testss;
go--開始事務
begin transaction readtran
update test1 set name='事務提交讀' where id='1';
waitfor delay '00:00:10';
commit transaction;
go讀取會話指令碼:
--宣告資料庫引用
use testss;
go--開啟事務
修改會話:依次顯示修改執行狀態和執行結果。
讀取會話:依次顯示執行狀態和執行結果。
讀取會話指令碼:
--宣告資料庫引用
use testss;
go--設定會話隔離級別
set transaction isolation level read committed;
--開啟事務
begin transaction trans
select * from test1 where id='1';
commit transaction;
go
Mysql事務隔離級別之讀提交
檢視mysql 事務隔離級別mysql show variables like isolation variable name value tx isolation read committed 1 row in set 0.00 sec 可以看到當前的事務隔離級別為read committed讀提...
事務已提交讀
事務已提交讀 在事務沒有結束之前,是不能讀取事務中操作的資料的。a begin tran update dbo.t1 set col2 version 2 where keycol 2 select col2 from dbo.t1 where keycol 2 b set transaction ...
SQL Server邏輯讀 預讀和物理讀
預讀 用估計資訊,去硬碟讀取資料到快取。預讀100次,也就是估計將要從硬碟中讀取了100頁資料到快取。物理讀 查詢計畫生成好以後,如果快取缺少所需要的資料,讓快取再次去讀硬碟。物理讀10頁,從硬碟中讀取10頁資料到快取。邏輯讀 從快取中取出所有資料。邏輯讀100次,也就是從快取裡取到100頁資料。s...