这在对发布者执行大型批处理操作(例如:DELETE)的情况下特别有用。我曾见过这样的情况,由于大规模的批量删除,数百万行受到影响,并且在它们发生的那一刻,它开始将命令传递给分发服务器,然后是订阅者。这会减慢复制速度,并且您会注意到延迟增加。使用此方法,可以在订阅服务器上执行相同的大型批处理操作,而不是通过分发服务器传递单个命令。但是,在实现此解决方案之前,您需要花时间进行一些研究,并评估这对于您的环境的可行性。有很多因素需要你注意。
了解更多详情,请访问 http://msdn.microsoft.com/en-us/library/ms152754.aspx
Enable Multiple Streams for Subscriber
为订阅者启用多个流可以通过并行应用订阅者更改来极大地提高聚合事务性复制吞吐量。在将其投入生产之前,您仍然需要考虑许多因素,并且需要做一些功课。
了解更多详情,请访问http://technet.microsoft.com/en-us/library/ms151762(v=sql.105).aspx
Maintain Indexes and Statistics in Distribution Database
分发数据库在SSMS中属于系统数据库。然而,需要某种程度的DBA干预来保持分布数据库的良好状态。分布数据库与普通用户数据库一样具有表、索引和统计信息。我们知道,索引需要维护(重建/重组),并且需要在用户数据库中运行更新统计信息,那么为什么不在分布数据库中进行相同的操作呢?清理存储过程有自己的统计数据更新语句,以使统计数据保持最新,但不是所有统计数据都是最新的。将索引和统计更新作业部署到分布数据库,并安排它们在非高峰时间运行,就像在用户数据库中所做的那样,这是完全可以的。按照MS的建议,我已经在生产环境中这样做了。
Distribution Agent 性能
上述查询的输出类似于Log Reader历史表的输出。查看Comments列的值。如果您看到状态为1的消息,则表示分发代理正常运行。使用xact_seqno可以识别复制的命令。如果您注意到xact_seqno的相同值持续了很长时间,这意味着它正在复制一个大事务。
Distribution Agent 配置文件
与日志读取器代理配置文件一样,分发服务器上也有分发代理配置文件。如果您从右窗格打开Agent Profiles窗口(参见图4),您可以选择Distribution Agents来查看配置文件。您可以调整代理的参数值来更改复制行为。您可以在发布级别执行此操作,也可以应用于所有发布。它需要在分发服务器中重新启动SQL Server Agent才能生效。
以下是一些你可以考虑调整的参数: