[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

SQL-92 隔离级别理解和测试

作者: zping,  出处:博客园, 责任编辑: 王晓晨, 
2008-08-24 08:10
  以前对数据库SQL-92 的隔离级别有所了解,但不知道真正其中的区别。今天就讨论一下这4个隔离级别。

  以前对数据库的隔离级别,有所了解,但不知道真正其中的区别。今天就讨论一下这4个隔离级别

  下面是4个隔离级别,在SQL server 2005里的介绍:

  READ UNCOMMITTED

  指定语句可以读取已由其他事务修改但尚未提交的行。

  READ COMMITTED

  指定语句不能读取已由其他事务修改但尚未提交的数据。这样可以避免脏读。其他事务可以在当前事务的各个语句之间更改数据,从而产生不可重复读取和幻像数据

  REPEATABLE READ

  其他事务可以插入与当前事务所发出语句的搜索条件相匹配的新行。如果当前事务随后重试执行该语句,它会检索新行,从而产生幻读

  SERIALIZABLE

  范围锁处于与事务中执行的每个语句的搜索条件相匹配的键值范围之内。这样可以阻止其他事务更新或插入任何行

  建立环境:

     create table t_emp(id numeric(10)
  ,name varchar(10),
  salary numeric(10,2));

  插入数据:

      insert into t_emp values(1,'jack',10000.50);
  insert into t_emp values(2,'jack2',8000.50);
  insert into t_emp values(3,'jack3',120000);
  insert into t_emp values(4,'jack4',5000);
  insert into t_emp values(5,'jack5',3000);

  脏读

  如果一个事务在提交操作结果之前,另一个事务可以看到该结果,就会发生这种情况

  测试语句一:

     SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  begin tran
  select * from dbo.t_emp where id=1

  测试语句二:

      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  begin tran
  update t_emp set name='zping.com' where id=1
共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅