数据库事务的级别

原创 2011年01月19日 23:42:00

1.read uncommitted(脏读)(读取正在提交的数据)

   read uncommitted(又称读取未提交内容)允许任务读取数据库中未提交的数据更改。

 

 测试脚本:

  1.   创建表

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 level repeatable 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完成后才可以读取数据

相关文章推荐

数据库事务隔离级别

  • 2011年12月19日 14:09
  • 154KB
  • 下载

数据库事务和隔离级别

  • 2013年03月26日 12:38
  • 10KB
  • 下载

数据库事务隔离级别

1.      Jdbc事务隔离级别 Jdbc隔离级别 数据库隔离级别 数据访问情况 TRANSACTION_READ_UNCOMMITTED(...
  • jcy7523
  • jcy7523
  • 2016年10月14日 17:36
  • 164

数据库事务的隔离级别

转自:http://blog.sina.com.cn/s/blog_4aefad88010092uc.html 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操...

数据库事务隔离级别

本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read co...

MySQL数据库事务隔离级别(Transaction Isolation Level)

转自:http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html             http://blog.csdn.net...

ORACLE数据库事务隔离级别

ORACLE数据库事务隔离级别 事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。 两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题: 1、幻想读:事务T1读取一...
  • lszzzz
  • lszzzz
  • 2015年09月08日 17:22
  • 204

数据库事务隔离级别

本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read ...

数据库事务4种隔离级别及7种传播行为

一、隔离级别: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐...
  • L330011
  • L330011
  • 2017年03月12日 16:04
  • 191

数据库事务及隔离级别

摘要:现在的数据库系统都是多用户系统,允许不同用户同时操作相同的数据,为此要求数据库系统要有并发处理能力。一旦执行并发处理,就会出现数据的不一致。而利用事务,可以让数据库系统在并发访问时尽量避免出现数...
  • Rocky95
  • Rocky95
  • 2012年11月22日 20:55
  • 527
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库事务的级别
举报原因:
原因补充:

(最多只允许输入30个字)