Mar*_*vin 8 performance sql-server merge-replication
有一个用于复制 BLOB(类型image
)的合并发布,对于我的数据大小获得了非常高的 tempdb 磁盘 I/O。出版物仅供下载,没有过滤器。
高磁盘 I/O 是由同步引起的(当没有订阅者同步时,一切正常),与订阅者数量密切相关。即使在同步之间发布者上没有更改数据时也会发生这种情况,这让我很困扰。
在发布服务器上使用 SQL Server 2008,在订阅服务器上使用 SQL Server 2005-2008R2。所有订阅者都使用 Web 同步。
此外,订阅者的同步需要很多时间,多次出现replmerg.log
如下:
Run Code Online (Sandbox Code Playgroud)DatabaseReconciler, 2015/04/21 12:13:40.348, 3604, 25088, S2, INFO: [WEBSYNC_PROTOCOL] Sending client ReconcilerPhase WebSyncReconcilerPhase_RegularDownload DatabaseReconciler, 2015/04/21 12:13:47.063, 3604, 25194, S2, INFO: [WEBSYNC_PROTOCOL] Received server ReconcilerPhase WebSyncReconcilerPhase_LastRegularDownload
试过@stream_blob_columns
打开和关闭没有效果。
该问题是:这是个好主意,用合并复制到这些斑点发送到用户?我们还有其他出版物(尽管它们没有 BLOB 列),其中包含大量数据而没有 tempdb 问题。是 SQL Server 缺陷还是设置不当?
发布者和分发者在同一个实例 SQL Server 2008 SP4 上,无法确定订阅者,其中一些可能不是最新的。无论如何,如果它似乎有帮助,我可以准备一个测试环境,其中几乎没有订阅者拥有受控版本。
确认,由于执行sys.sp_MSenumgenerations90
. 检查MSMerge_genhistory
表,发现超过 120 万条记录pubid
为空。
找到了与复制大师的对话:
执行sp_mergemetadataretentioncleanup
没有效果。
在这样的情况下找到了一个评论(行太多MSmerge_genhistory
),其中删除pubid
为 null 和genstatus
=1 的行有助于修复复制。
删除的行为pubid
空(意味着所有订阅服务器都已同步,哪些不是 - 将在“手动模式”下重新初始化)并且磁盘 IO 再次恢复正常!
我有一种感觉,这种情况可能是由以下事实造成的,即我的所有订阅者都是通过 WebSync 匿名的,并且其中大多数具有相同的主机名。我会尝试检查,如果-hostname
key 有助于不增加MSmerge_genhistory
.
有一个 TechNet 博客讨论了 SQL Server 2008 或更高版本服务器上的 Blob 的一些合并复制问题。
请注意,作者警告了当存在 SQL Server 2005 客户端(例如您所拥有的客户端)时要使用哪些设置。
归档时间: |
|
查看次数: |
1150 次 |
最近记录: |