我正在运行一个高事务性的数据库(平均约17.5万笔事务/分钟,每小时将近900万条记录被添加和删除)
直到最近,这还不是什么大问题,因为我们已经添加和删除了约750万条记录,但是随着最新数据的涌入,幽灵清理似乎无法跟上清理工作的步伐。表/索引上未使用的空间。
几天前,我们在16个表(大多数是2个表)中达到了53 GB的“未使用空间”,因此开始研究幽灵清理过程,发现它每5秒运行一次并运行10页。
我当前的解决方案是那天清晨,我正在运行以下命令的三个线程:
DECLARE @2hours datetime = dateadd(hour,2,getutcdate())
WHILE getutcdate() < @2hours
BEGIN
DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS
END
赶上前一天晚上的积压工作(大部分删除操作都发生了)
我想知道是否有办法将默认设置从5秒和10页更改为每秒一次或运行超过20页,是否有任何方法可以这样做,还是我应该继续整理多个清理过程来清除数据,或者是否有其他措施可以帮助您
重新编制索引至少每周一次(大多数情况是隔天一次)对受影响最大的索引进行一次
AlwaysOn高可用性群集上的SQL Server 2012 Enterprise SP3_CU8(明天升级到CU9)也具有复制功能(在单独的服务器上分发)