MSSQL中的“读提交快照”

0    106    1

Tags:

👉 本文共约1017个字,系统预计阅读时间或需4分钟。

简介

当数据库中存在大量面积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页面上的旧版本。 下图显示了这个概念。

img

为了实现上面的功能,SQL Server必须为数据库中的数据页面上的每个记录添加一个14字节长的指针。 这意味着每个记录的长度将延长14字节。 您可能已经知道,当您使用*固定长度*的数据类型时,SQL Server中的记录不能超过8060字节。 这意味着启用RCSI / SI可能导致这些记录大于8060字节。

查询

修改

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复