使用快照隔离snapshot isolation实例(一)
来源:互联网 发布:字典转json 去掉制表符 编辑:程序博客网 时间:2024/05/23 19:16
根据微软《使用快照隔离》的内容,运行了其中的例子并给出中文注释。
示例
以下示例通过尝试访问锁定的数据,演示不同隔离级别的行为,并非要在生产代码中使用。
该代码连接到 SQL Server 中的 AdventureWorks 示例数据库上,并创建一个名为 TestSnapshot 的表,然后插入一行数据。该代码使用 ALTER DATABASE Transact-SQL 语句对数据库启用快照隔离,但是不设置 READ_COMMITTED_SNAPSHOT 选项,让默认的 READ COMMITTED 隔离级别的行为生效。然后,该代码执行下列操作:
开始但是不完成 sqlTransaction1,sqlTransaction1 使用 SERIALIZABLE 隔离级别开始更新事务。这样做的结果是锁定表。
打开第二个连接,并使用 SNAPSHOT 隔离级别开始第二个事务,读取 TestSnapshot 表中的数据。因为启用了快照隔离,此事务可以读取在开始 sqlTransaction1 之前存在的数据。
打开第三个连接,并使用 READ COMMITTED 隔离级别开始一个事务,尝试读取表中的数据。在这种情况下,代码无法读取数据,因为代码在第一个事务中无法通过在表上放置的锁进行读取,因而超时。如果使用 REPEATABLE READ 和 SERIALIZABLE 隔离级别,因为这些隔离级别也无法通过第一个事务中放置的锁,因而会出现同样的结果。
打开第四个连接,并使用 READ UNCOMMITTED 隔离级别开始一个事务,对 sqlTransaction1 中未提交的值执行脏读。如果第一个事务未提交,数据库中永远不会真正存在此值。
回滚第一个事务,并通过删除 TestSnapshot 表以及禁用 AdventureWorks 数据库的快照隔离来进行清理。
- 使用快照隔离snapshot isolation实例(一)
- 使用快照隔离snapshot isolation实例(二)
- 数据库的快照隔离级别(Snapshot Isolation)
- 快照隔离(Snapshot Isolation)简单介绍和例子
- AD快照简单使用snapshot
- 隔离级别(Isolation Level)
- 快照(Snapshot)技术发展综述
- 快照(Snapshot)技术发展综述
- LVM快照(snapshot)备份
- 快照(Snapshot)技术发展综述
- oracle 快照(snapshot) 管理
- HBase快照(Snapshot)技术
- HBase快照(Snapshot)技术
- Maven快照机制(SNAPSHOT)
- Maven快照机制(SNAPSHOT)
- Read Committed Snapshot Isolation和Snapshot Isolation
- Maven2中snapshot快照库的使用
- Spring的事务隔离级别(isolation)
- How to add a new MimeType to a Virtual Directory with VC++?
- J2SE之IO基础--IO视图
- poj1556
- How to add a new MimeType to a Virtual Directory with VC++?
- 360的启动优化
- 使用快照隔离snapshot isolation实例(一)
- 度过有意义的生命
- 内存篇
- 0-1总体分布下的参数假设检验示例一(SPSS实现)
- 显卡总是重启的问题
- 编程经验_Visual C++ 6.0_启动程序时伴随主窗口弹出程序说明窗口(1)
- 现在还差一分
- strsep
- 综合布线的3个主要阶段