限制 SQL Server 复制?

发布于 2024-10-14 23:08:50 字数 188 浏览 1 评论 0原文

我们在 sql server 2008 上当前的事务复制设置存在性能问题。 当创建新快照并将快照应用于订阅者时,我们看到发布者和分发者上的网络利用率跃升至 99%,并且磁盘队列达到 30 这导致应用程序超时。

有什么办法可以限制正在发送的复制数据吗? 我们可以限制复制的行数吗? 是否有任何开关可以打开/关闭来实现此目的?

谢谢!

We have a performance issue with the current transactional replication setup on sql server 2008.
When a new snapshot is created and the snapshot is applied to the subscriber, we see network utilization on the publisher and the distributor jump to 99%, and we are seeing disk queues going to 30
This is causing application timeouts.

Is there any way, we can throttle the replicated data that is being sent over?
Can we restrict the number of rows being replicated?
Are there any switches which can be set on/off to accomplish this?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

国际总奸 2024-10-21 23:08:51

您有一个替代方案来处理这种情况

  • 在具有数百万条记录的表上设置事务复制时
  • 初始快照将需要一些时间才能将记录传递给订阅者
  • 在 SQL 2005 中,我们可以选择在事务和数据库上创建表发布服务器,填充数据集并在其上设置复制
  • 当您使用命令 EXEC sp_addsubscription set 添加订阅时,设置 @sync_type = '仅复制支持'。
  • 参考文章 http://www.mssqltips.com/tip.asp?tip=1117

You have an alternative to deal with this situation

  • While setting up transaction replication on a table that has millions of records
  • Initial snapshot would take time for the records to be delivered to subscriber
  • In SQL 2005 we have an option to create the tables on both transaction and publish server, populate dataset and setup replication on top of it
  • When you add subscription with command EXEC sp_addsubscription set The @sync_type = 'replication support only'.
  • Reference article http://www.mssqltips.com/tip.asp?tip=1117
情定在深秋 2024-10-21 23:08:51

我们的 DBA 迫使我们分解 dml 代码,以便一次批量运行 50000 行,中间间隔几分钟。他有时会使用该批量大小,但这样我们的复制数据库就可以了。
对于批处理,所有内容都必须放入临时表中,一个执行 row_number() 的新列(将其命名为 Ordinal),然后是一个类似于 Ordinal / 50000 的 BatchID。最后是一个循环来计算 BatchID 并逐批更新目标表。对开发人员来说很困难,对 DBA 来说更容易,而且无需为基础设施支付更多费用。

Our DBA has forced us to break down dml code to run in batches of 50000 rows at a time with a couple of minutes in between. He plays with that batch size time to time but this way our replicating databases are ok.
For batching, everything has to go into temp tables, a new column (name it Ordinal) that does row_number(), and then a BatchID to be like Ordinal / 50000. Finally comes a loop to count BatchID and update target table batch by batch. Hard on devs, easier for DBAs and no need to pay more for infrastructure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文