SQL Server的四种隔离级别_第1页
SQL Server的四种隔离级别_第2页
SQL Server的四种隔离级别_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL Server的四种隔离级别知识点整理特别制作了流程图,方便以后查看!SET TRANSACTION ISOLATION LEVELREAD UNCOMMITTED| READ COMMITTED| REPEATABLE READ| SERIALIZABLE一、未提交读READ UNCOMMITTED(脏读)意义:包含未提交数据的读。例如,在多用户环境下,用户B更改了某行。用户A在用户B提交更改之前读取已更改的行。如果此时用户B再回滚更改,则用户A便读取了逻辑上从未存在过的行。(如图演示)演示:1)用户B:BEGIN TRANUPDATE test SET age=25 WHERE na

2、me = AA2)用户A:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED(此句不写即默认为READ COMMITTED模式)SELECT * FROM test(此时将查到AA的age值为25)3)用户B:ROLLBACK(此时撤消了步骤1的UPDATE操作,则用户A读到的错误数据被称为脏读)二、提交读(READ COMMITTED)意义:指定在读取数据时控制共享锁以避免脏读。此隔离等级的主要作用是避免脏读。 演示:1)用户B:BEGIN TRANUPDATE test SET age=25 WHERE name = AA2)用户A:SET T

3、RANSACTION ISOLATION LEVEL READ COMMITTEDSELECT * FROM test (上句设置了提交读模式,则此时将会查不到数据,显示查询等待中,直到用户B进行了ROLLBACK或者COMMIT操作后,此语句才会生效)三、不一致的分析REPEATABLE READ(重复读)意义:在多用户环境下,用户A开了一个事务,并且先对test表的某条记录做了查询(select * from test where name = AA),接着用户B对test表做了更新并提交(update test set age=25 where name=AA),这时A再去查test表中

4、的这条记录,第一次读到的age值为12,第二次为25,两次读到的数据不一样,称之为重复读。(如图演示)解决办法:在用户A的事务运行之前,先设定SQL的隔离等级为REPEATABLE READSQL语句为SET TRANSACTION ISOLATION LEVEL REPEATABLE READ这样在上图第一步中,用户A查询完之后,用户B将无法更新用户A所查询到的数据集中的任何数据(但是可以更新、插入和删除用户A查询到的数据集之外的数据),直到用户A事务结束才可以进行更新,这样就有效的防止了用户在同一个事务中读取到不一致的数据。四、幻象(SERIALIZABLE)意义:在多用户环境下,用户A开启了一个事务,并查询test表中的所有记录,然后用户B在自己的事务中插入(或删除)了test表中的一条记录并提交事务,此时用户A再去执行前面的查询整张表记录的操作,结果会多出(少了)一条记录,此操作称之为幻象。(如图演示)解决办法:在用户A的事务运行之前,先设定SQL的隔离等级为SERIALIZABLE语句为SET TRANSACTION ISOLATION LEVEL SERIALIZABLE这样在用户A的事务执行过程中,别的用户都将无法对任何

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论