tempdb 在“已提交读取快照隔离”下不会增长



为了纠正死锁(由索引视图引入(,我尝试在sql服务器中使用RCSI。我通过以下方式参与此模式:

ALTER DATABASE MyDatabase SET READ_COMMITTED_SNAPSHOT ON
ALTER DATABASE MyDatabase SET ALLOW_SNAPSHOT_ISOLATION ON

并验证它是否由以下人员设置:

DBCC useroptions  
SELECT * FROM sys.databases 

我的数据库中有 8 个 tempdb,它们设置为自动增长 64 MB。在引入数千条记录后,我没有看到tempdbs有任何增长。根据文档,RCSI 大量使用 tempdb 并大大增加了其大小。我预计 tempdb 会有所增加。跟踪 1117、1118 也处于打开状态。但是 tempdb 大小不会增加。我尚未为 Tempddb 数据库启用允许快照隔离。

谢谢

根据文档,RCSI 大量使用 tempdb 并大大增加了其大小。

对RCSI有很多毫无根据的担忧。 并且 INSERT 仅在表上有触发器时才创建行版本。

来自 BOL

启用 SNAPSHOT 隔离级别后,每次更新行时,SQL Server 数据库引擎都会在 tempdb 中存储原始行的副本,并向该行添加事务序列号。

这意味着,如果要更新一行,则将一行放入 TempDB,如果要更改或更新整个表,则整个表将放入 TempDB 中。因此,您的特定工作负载完全有可能不需要在 TempDB 中进行大量数据版本控制。我需要在大型更新期间大幅增加 TempDB 的大小(或关闭 RSCI(以避免此问题。

此问题还讨论了使用 TempDB 时要考虑的许多事项。

最新更新