系统有性能问题

更新日期: 2006 年 12 月 12 日

复制性能可以按照以下五个维度计量:

  • 滞后时间:在复制拓扑中的节点之间传播数据更改所用的时间。
  • 吞吐量:一段时间内系统可以持续的复制活动量(以一段时间内传递的命令来度量)。
  • 并发:可以在系统上同时运行的复制进程数。
  • 同步持续时间:完成给定同步所用的时间。
  • 资源占用:复制处理结束时所用的硬件和网络资源。

滞后时间和吞吐量与事务复制关系最密切,因为建立在事务复制基础上的系统通常需要低滞后时间和高吞吐量。并发和同步持续时间与合并复制关系最密切,因为建立在合并复制基础上的系统通常具有大量的订阅服务器,发布服务器可能具有大量与这些订阅服务器的并发同步。

配置复制后,建议制定一个性能基准,用以确定复制如何处理应用程序和拓扑的典型工作负荷。使用复制监视器和系统监视器确定上面所列的五个复制性能维度的典型数字。制定基准数字后,在复制监视器中设置阈值和警报。有关详细信息,请参阅用复制监视器监视性能在复制监视器中设置阈值和警告为复制代理事件使用警报。有关可用于排除复制故障的工具的详细信息,请参阅复制故障排除工具

解释和用户操作

复制性能受下列因素影响:

  • 服务器和网络硬件
  • 数据库设计
  • 分发服务器配置
  • 发布设计和选项
  • 筛选器设计和用法
  • 订阅选项
  • 快照选项
  • 代理参数
  • 维护

如果遇到性能问题,建议通读下面各部分中的建议,然后更改影响所遇到的问题的地方。例如:

  • 如果使用的是合并复制并在复制监视器中注意到一个筛选项目占用了大部分同步时间:请确认您使用的是适当的筛选选项,并且筛选器中的列已建立索引。
  • 如果使用的是事务复制并且在对已发布表执行批处理操作时遇到长滞后时间:请考虑复制存储过程的执行以在订阅服务器上执行批处理操作。

所有复制类型

对于所有复制类型,都应该考虑以下方面。有关详细信息,请参阅提高常规复制的性能

  • 服务器和网络
    • 设置分配给 Microsoft SQL Server 数据库引擎的最小和最大内存量。
    • 确保正确分配数据库数据文件和日志文件。使用单独的磁盘驱动器存放复制过程中所涉及的所有数据库的事务日志。
    • 考虑增加复制所用的服务器的内存,尤其是分发服务器的内存。
    • 使用多处理器计算机。
    • 使用快速网络。如果网络速度较慢,请指定适当的网络设置和代理参数。有关详细信息,请参阅慢速网络导致问题
  • 数据库设计
    • 遵循最佳的数据库设计方法。
    • 考虑设置 READ_COMMITTED_SNAPSHOT 数据库选项。
    • 慎用触发器中的应用程序逻辑。
    • 限制使用大型对象 (LOB) 数据类型。
  • 发布设计和选项
    • 仅发布所需数据。
    • 通过发布设计和应用程序行为最大限度地减少冲突。
    • 灵活地使用行筛选器。
    • 降低复制代理的详细级别,在初始测试、监视或调试期间除外。
  • 订阅选项
    • 存在大量订阅服务器时,使用请求订阅。
    • 如果订阅服务器滞后过多,请考虑重新初始化订阅。
  • 快照选项
    • 仅在必要时和非高峰时段运行快照代理。
    • 为发布使用单个快照文件夹。
    • 将快照文件夹放在分发服务器上未用于存储数据库或日志文件的本地驱动器中。
    • 在订阅服务器上创建订阅数据库时,考虑指定简单恢复模式或大容量日志恢复模式。
    • 在低带宽网络的可移动媒体上使用备用快照文件夹和压缩的快照。
    • 使用快照代理、合并代理和分发代理的 -MaxBCPThreads 参数。使用分发代理和合并代理的 -UseInprocLoader 参数。

事务复制

对于事务复制,应考虑以下方面。有关详细信息,请参阅增强事务复制性能

  • 数据库设计
    • 在应用程序设计中,最大限度地减小事务大小。
  • 分发服务器配置
    • 在专用服务器上配置分发服务器。
    • 为分发数据库设置适当的大小。
  • 发布设计和选项
    • 在对已发布的表进行批更新时,复制存储过程执行。
    • 将项目分布在多个发布上。
  • 订阅选项
    • 如果在同一台发布服务器上有多个发布,请使用独立代理,而不要使用共享代理(这是 SQL Server 2005 的默认设置)。
    • 连续运行代理,而不是按计划频繁运行代理。
  • 代理参数
    • 使用日志读取器代理的 -MaxCmdsInTran 参数。
    • 使用分发代理的 -SubcriptionStreams 参数。
    • 增大日志读取器代理的 -ReadBatchSize 参数的值。
    • 增大分发代理的 -CommitBatchSize 参数的值。
    • 减小日志读取器代理的 -PollingInterval 参数的值。

合并复制

对于合并复制,应考虑以下方面。有关详细信息,请参阅增强合并复制性能

  • 数据库设计
    • 对行筛选器和联接筛选器中使用的列建立索引。
    • 考虑包含大型对象 (LOB) 数据类型的超规范化表。
  • 发布设计
    • 使用发布兼容级别 90RTM (SQL Server 2005)。
    • 使用适当的发布保持期设置。
    • 对仅在发布服务器上更改的那些表使用仅下载项目。
  • 筛选器设计和用法
    • 限制行筛选器子句的复杂性。
    • 通过参数化筛选器使用预计算分区(默认情况下使用此功能)。
    • 如果数据已经筛选但未在用户之间共享,请使用不重叠的分区。
    • 不要创建复杂的联接筛选器层次结构。
    • 如果在逻辑上允许,请将 join_unique_key 选项设置为 1
  • 预计算分区注意事项
    • 当批处理包含大量数据更改时,请谨慎设计应用程序。联接筛选器父表中的数据更改应在子表中的对应更改之前进行。
    • 当批处理包含大量数据更改时,请减少单个批处理中的更改数量并在批处理之间运行合并代理。如果无法执行此操作,请增加发布的 generation_leveling_threshold 值。
  • 订阅注意事项
    • 交错订阅同步计划。
  • 代理参数
    • 如果通过快速连接同步订阅,并通过发布服务器和订阅服务器发送更改,请使用合并代理的 -ParallelUploadDownload 参数。
  • 快照选项
    • 在生成初始快照之前,在大型表上创建 ROWGUIDCOL 列。
    • 预先生成快照和/或允许订阅服务器在第一次同步时请求生成快照和应用快照。
  • 维护
    • 不定期地重新对合并复制系统表建立索引。
    • 使用复制监视器中的**“同步历史记录”**选项卡监视同步性能。

请参阅

概念

对复制进行故障排除

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 添加了执行大型批处理的性能建议。