CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

初学者的学习-11->Transaction Isolation Level

楼主black_snail(●男人要忍○)2003-03-04 11:52:57 在 MS-SQL Server / 疑难问题 提问

SET   TRANSACTION   ISOLATION   LEVEL    
        READ   COMMITTED  
        |   READ   UNCOMMITED  
        |   REPEATABLE   READ  
        |   SERIALIZABLE  
   
      DBCC   USEROPTIONS     -->To   Display   the   current   Transaction   Isolation   level  
   
      有哪位大虾,可以给出具体的描述和例子   ?  
   
       
      READ   UNCOMMITED   似乎是   SQLSERVER   特有的?  
   
   
     
  问题点数:100、回复次数:4Top

1 楼enhydraboy(乱舞的浮尘)回复于 2003-03-04 13:03:38 得分 59

我做了一个测试,我都是在Query   Anylaze中作的  
  1   先建一个表  
  CREATE   TABLE   [a]   (  
  [c1]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,  
  [c2]   [varchar]   (2)     NULL    
  )   ON   [PRIMARY]  
  GO  
   
  2   开两个新的命令窗口(等于两个连接)  
  3   在窗口A中输入下面命令  
  begin   tran  
  insert   into   a(c2)     values('aa')  
  注意,不要写commit   trans  
  提示插入一条记录  
  4   在窗口B中输入下面命令  
  SET   TRANSACTION   ISOLATION   LEVEL   READ   UNCOMMITTED  
  begin   tran  
  insert   into   a(c2)     values('bb')  
  提示插入一条记录  
   
  5   在窗口B中输入下面命令  
  select   *   from   a  
  在READ   UNCOMMITTED模式下,是不会等待窗口A的提交事务。  
  可以看到记录如下  
  c1                     c2        
  -----------   ----    
  1                       aa  
  2                       bb  
   
  6   在窗口A中输入命令  
  select   *   from   a  
  系统就等待,等窗口B提交事务。  
   
  7   在窗口B中输入命令  
  commit   tran  
  窗口A就得到记录  
  c1                     c2        
  -----------   ----    
  1                       aa  
  2                       bb  
   
  8   在窗口A中输入  
  commit   tran  
   
  9   在窗口B中输入  
  SET   TRANSACTION   ISOLATION   LEVEL   READ   COMMITTED  
   
  总结  
   
  READ   UNCOMMITTED  
   
  执行脏读或   0   级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置   NOLOCK   相同。这是四个隔离级别中限制最小的级别。  
   
   
   
  Top

2 楼peterzhou2000()回复于 2003-03-04 13:13:39 得分 1

更新数据时如何实现行级别锁定,而不是表级别的锁定。Top

3 楼leimin(黄山光明顶)回复于 2003-03-04 14:56:43 得分 20

对enhydraboy()   的实例的补充:  
  REPEATABLE   READ  
        |   SERIALIZABLE  
  会产生幻影数据  
  比如:  
  有一长事务TRAN   A   再更新某条记录,TRAN   B在TRAN   A没有提交是就提交一UPDATE记录,TRANS   A将可以重新读取TRANS   B的根新记录。  
  Top

4 楼leimin(黄山光明顶)回复于 2003-03-04 15:26:00 得分 20

|   REPEATABLE   READ  
  |   SERIALIZABLE  
  是可以读取幻影数据。在一个事务中可以读取另外一个事务处理的对象!Top

相关问题

  • SET TRANSACTION ISOLATION LEVEL{}中的四个等级,通俗,明白的解释。请指教?
  • Isolation level的问题(高手请进!)
  • 学习
  • 学习
  • 学习!
  • 学习
  • 学习学习3
  • 初学者向各位大虾学习:请教标准类transaction的问题
  • TO:binbare(学习!学习!再学习!)
  • 深入学习

关键词

  • 数据
  • trans
  • 事务
  • uncommitted
  • transaction isolation
  • 提交
  • 记录
  • 级别
  • level
  • 命令

得分解答快速导航

  • 帖主:black_snail
  • enhydraboy
  • peterzhou2000
  • leimin
  • leimin

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo