合 MSSQL中的“读提交快照”
Tags: MSSQLSQL Server读提交快照
简介
当数据库中存在大量面积LCK_M_S 共享锁的时候,我们经常会选择使用读提交快照隔离级别。读提交快照处于打开状态(READ COMMITTED SNAPSHOT)设置True,可对查询性能改进带来帮助,避免发生阻塞的情况。
在SQL Server中,用户可以在会话级别或全局级别设置事务隔离级别,甚至可以在查询级别通过特定的提示(如NOLOCK提示)临时改变隔离行为。
从SQL Server 2005开始,就有了READ COMMITTED SNAPSHOT隔离级别(RCSI)和快照隔离级别(SI),即基于行版本的已提交读(Read Committed Snapshot Isolation, RCSI)。当使用这些新的隔离级别时,SELECT语句在阅读过程中不会获得S共享锁。 (UPDATE,DELETE语句)将他们正在更改的记录的旧版本,存入为TempDb。 他们正在创建一个版本链,其中记录的实际版本(存储在数据库中的数据页面上)指向存储在TempDb页面上的旧版本。 下图显示了这个概念。