我们在 sql server 2008 上的当前事务复制设置存在性能问题。当创建新快照并将快照应用于订阅者时,我们看到发布者和分发者的网络利用率跃升至 99%,我们看到磁盘队列达到 30 这会导致应用程序超时。
有什么办法可以限制正在发送的复制数据?我们可以限制被复制的行数吗?是否有任何开关可以设置为开/关来完成此操作?
谢谢!
我们在 sql server 2008 上的当前事务复制设置存在性能问题。当创建新快照并将快照应用于订阅者时,我们看到发布者和分发者的网络利用率跃升至 99%,我们看到磁盘队列达到 30 这会导致应用程序超时。
有什么办法可以限制正在发送的复制数据?我们可以限制被复制的行数吗?是否有任何开关可以设置为开/关来完成此操作?
谢谢!
你有另一种方法来处理这种情况
我们的 DBA 迫使我们将 dml 代码分解为一次分批运行 50000 行,中间间隔几分钟。他不时使用该批量大小,但这样我们的复制数据库就可以了。对于批处理,所有内容都必须进入临时表,一个执行 row_number() 的新列(命名为 Ordinal),然后是一个类似于 Ordinal / 50000 的 BatchID。最后是一个循环来计算 BatchID 并逐批更新目标表. 对开发人员来说很难,对 DBA 来说更容易,而且不需要为基础设施支付更多费用。