資料庫事務的級別

2021-06-16 05:12:40 字數 2314 閱讀 6743

1.read uncommitted(髒讀)(讀取正在提交的資料)

read uncommitted(又稱讀取未提交內容)允許任務讀取資料庫中未提交的資料更改。

測試指令碼:

建立表

create table [dbo].[testtb](

[id] [int] null,

[name] [char](20) null

)  

2.建立 事務a:插入資料

begin tran

insert into testtb values(5,'e')

waitfor delay '00:00:10'

commit;

3.建立事務b:讀取資料

set transaction isolation level read uncommitted

begin tran

select * from testtb

commit;

4.執行事務a立即執行事務b,此時事務a還沒有提交,而事務b可以讀取事務a正在提交的資料

2.read committed(提交讀)(不能讀取正在提交的資料)

級別read committed(又稱讀取已提交內容)可防止髒讀。該級別查詢只讀取已提交的資料更改。如果事務需要讀取被另一未完成事務 修改的資料,該事務將等待,直到第乙個事務完成(提交或回退)。

create table [dbo].[testtb](

[id] [int] null,

[name] [char](20) null

)  

2.建立 事務a:插入資料

begin tran

insert into testtb values(5,'e')

waitfor delay '00:00:10'

commit;

3.建立事務b:讀取資料

set transaction isolation level read committed

begin tran

select * from testtb

commit

4.執行事務a立即執行事務b,此時事務a還沒有提交,而事務b必須等到事務a完成後才可以讀取資料

3.repeatable read(可重複讀)(讀取資料是不能修改)

指定語句不能讀取已由其他事務修改但尚未提交的行,並且指定,其他任何事務都不能在當前事務完成之前修改由當前事務讀取的資料。

create table [dbo].[testtb](

[id] [int] null,

[name] [char](20) null

)  

2.建立 事務a:更新資料

begin tran

update testtb set name='cv' where id='8'

waitfor delay '00:00:10'

commit;

3.建立事務b:讀取資料

set transaction isolation levelrepeatable read

begin tran

select * from testtb

commit

4.執行事務a立即執行事務b,此時事務a還沒有提交,而事務b必須等到事務a完成後才可以讀取資料

4.serializable(順序讀)(讀取資料是不可插入或修改)

create table [dbo].[testtb](

[id] [int] null,

[name] [char](20) null

)  

2.建立 事務a:更新資料和插入資料

begin tran

insert into testtb values(9,'d')

update testtb set name='cv' where id='8'

waitfor delay '00:00:010'

commit;

3.建立事務b:讀取資料

set transaction isolation level  level serializable

begin tran

select * from testtb

commit;

4.執行事務a立即執行事務b,此時事務a還沒有提交,而事務b必須等到事務a完成後才可以讀取資料

資料庫事務級別

1.地球人都知道的,但往往你就不能說出口,所以事務的相關概念還是有必要提一下 事務特性 acid特性 事務隔離級別 由弱到強分別是 read uncommitted read committed repeatable read和serializable ps mysql的預設事務隔離級別是repea...

資料庫事務級別

併發導致資料出現的問題 1.髒讀 drity read 釋義 已知有兩個事務a和b,a讀取了已經被b更新但還沒有被提交的資料,之後,b回滾事務,a讀取的資料就是髒資料。注 即事務b讀取了事務a在記憶體中修改的資料 未提交寫入資料庫的磁碟 即read uncommitted 讀未提交隔離機制 即可發生...

資料庫事務隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...