繁体   English   中英

使用LOB读取提交的快照隔离

[英]Read Committed Snapshot isolation with LOBs

我在SQL Server 2017 DB中有一个表,该表由许多源自多个线程的长时间运行的事务使用。 这会导致一天几次死锁,因此我正在考虑实现读取已提交快照隔离。 诀窍是该表具有3个VARBINARY(MAX)列,每个列中除了几个int和bit列外,还包含10-1000MB之间的数据(平均约为20 MB)。

现在的问题:

问题1: SQL Server是否将整个行(包括VARBINARY(MAX)列)复制到TEMPDB中?

问题2:如果这样,将VARBINARY(MAX)列移动到与原始表具有1:1关系的单独表中,性能是否会受益?

Sql Server必须为您提供数据的一致视图(例如,T2看到您的行,包括LOB,就像T1开始更改事务之前一样)。 这意味着-是的,除了将LOB与其余行数据一起复制外,别无选择。 这使我认为是的,通过使用带有LOB的单独表可以提高性能。

像往常一样,我建议您做一个简单的实验,以衡量两种配置的性能。 请在这里发布您的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM