sql-server – 将数据库事务隔离级别更改为SQL Server复制“分发”数据库的SNAPSHOT

我有几个事务复制出版物,它们对一篇出版物文章进行了大量更改(近10亿条记录).这些事务由日志阅读器捕获并存储在分发数据库中,最长可达一天,然后我们将分发代理运行到两个订阅者.

结合这些大型事务复制出版物,我们还有几个较小的出版物,每天运行,有时每天运行多次.我们看到的是,当日志阅读器正在读取大型事务并将它们存储在分发数据库中时,较小的每日出版物将被阻止,直到日志阅读器完成对分发数据库的写入.注意:这些出版物在单个分发服务器上使用相同的分发数据库.

对于上述两种情况,分发代理程序不会按计划运行,而是按需运行:SSIS程序包在传递每个发布/预订组合的参数时调用多个CMD distrib.exe.执行这些代理程序时没有问题.

由于这些是两个完全不同的数据集,尽管从同一个数据库发布,我正在考虑将数据库的事务隔离级别更改为SNAPSHOT以避免锁定并允许并发处理分发数据库中的事务.

有没有人有这方面的经验?我已经将SNAPSHOT隔离级别用于我们遇到死锁的另一个数据库,同时访问同一个表但不同的记录并且它运行良好.

如果不能改变隔离级别,那么如何减少这种大型日志读取器写入分发数据库的影响?

最佳答案
有了10亿次更改,当将行版本添加到所有内容时,我会担心TempDB的大小.希拉里·科特在这里回答了同样的问题 – https://social.msdn.microsoft.com/Forums/sqlserver/en-US/2edbdc37-c2ed-4c84-ae72-16f89404172b/sql-server-replication-and-enabling-readcommittedsnapshot-on-the-distributor?forum=sqlreplication.

他绝对是你想要复制相关问题的人.

转载注明原文:sql-server – 将数据库事务隔离级别更改为SQL Server复制“分发”数据库的SNAPSHOT - 代码日志