READ_COMMITTED_SNAPSHOT的优点和缺点

时间:2012-06-04 02:07:26

标签: sql-server-2008 c#-4.0 transactions

在SQL Server 2008中设置READ_COMMITTED_SNAPSHOT ON有哪些优缺点?

实际上我正在解决事务死锁的问题,但是通过设置READ_COMMITTED_SNAPSHOT ON并禁用锁定升级(仅在导致死锁的事务中使用的表)。这完成了约90%的死锁问题;但我担心它可能会有一些其他问题,比如性能等。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:10)

RCSI的好处:

  • 在查询开始时提供一致的数据视图
  • 无阻挡
  • 更少的锁定/升级

然而,这不是免费的; tempdb用于保留它所谓的“版本存储”。这可能意味着:

  • space&对tempdb的I / O要求增加以维护版本
  • 如果长时间运行的事务需要长期保存版本和/或存在多个版本,则可能导致性能下降

此外,行版本信息每行增加14个字节。

RCSI的常见替代方案通常涉及将写入活动与报告分开。这可以通过各种HA技术来完成,例如SQL Server 2012中的日志传送,镜像+快照或可用性组+只读辅助服务。

一些官方文件参考: