【问题标题】:Throttling SQL server Replication?限制 SQL 服务器复制?
【发布时间】:2011-01-27 22:03:57
【问题描述】:
我们在 sql server 2008 上的当前事务复制设置存在性能问题。
当创建新快照并将快照应用于订阅者时,我们看到发布者和分发者的网络利用率跃升至 99%,并且我们看到磁盘队列达到 30
这会导致应用程序超时。
有什么方法可以限制发送过来的复制数据?
我们可以限制被复制的行数吗?
是否有任何开关可以设置为开/关来完成此操作?
谢谢!
【问题讨论】:
标签:
sql-server-2008
database-replication
transactional-replication
【解决方案1】:
你有另一种方法来处理这种情况
- 在具有数百万条记录的表上设置事务复制时
- 初始快照需要一些时间才能将记录传递给订阅者
- 在 SQL 2005 中,我们可以选择在事务服务器和发布服务器上创建表、填充数据集并在其上设置复制
- 当您使用命令 EXEC sp_addsubscription set 添加订阅时,@sync_type = 'replication support only'。
- 参考文章http://www.mssqltips.com/tip.asp?tip=1117
【解决方案2】:
我们的 DBA 迫使我们分解 dml 代码,以便一次分批运行 50000 行,中间间隔几分钟。他不时使用该批量大小,但这样我们的复制数据库就可以了。
对于批处理,所有内容都必须进入临时表,一个执行 row_number() 的新列(命名为 Ordinal),然后是一个类似于 Ordinal / 50000 的 BatchID。最后是一个循环来计算 BatchID 并逐批更新目标表.对开发人员来说很难,对 DBA 来说更容易,而且不需要为基础设施支付更多费用。