事务复制的一个问题

[复制链接]
查看11 | 回复9 | 2012-5-22 15:05:35 | 显示全部楼层 |阅读模式
Hi all,
遇到一个问题,
SQLServer 2008 的事务复制中遇到当Distribution clean up: distribution 该Job运行的时候,Agent history clean up:distribution的Job以及Replication agents checkup该Job就一直运行不结束.
然后导致同步的延迟相当高.
只有当手动停止掉Replication agents checkup该Job时,另外两个Job也就随之停止了....之后同步就可以下去了.
请问需要怎么处理呢?

回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
本帖最后由 lzf328 于 2013-2-4 17:28 编辑
1.你这个JOB多久执行一次?
2.一次清除多久的数据?
3.SQL LOG有错误信息吗?

回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
lzf328 发表于 2013-2-4 17:25
1.你这个JOB多久执行一次?
2.一次清除多久的数据?
3.SQL LOG有错误信息吗?

这个Job是创建replication时系统自动创建的.
该Job是每10分钟运行一次.
@max_distretention = 72 看起来是删除三天以前的数据
SQL Errorlog中并没有任何错误信息
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
以下愚见
1.可能是清理作业执行的时候有阻塞,复制分发日志太多的缘故。在停掉其他两个清理作业
Agent history clean up: distribution
Distribution clean up: distribution
手动执行作业Expired subscription clean up。
成功后手动试着把上述两个作业再执行一次。
2.曾经遇到过复制分发系统表统计信息不准确引起的这类阻塞,更新后就好了。(MSrepl_commands)
3.如果大量的复制分发命令持续时间特别长,考虑分析这些复制命令,可能存在过度高消耗低价值的DELETE和INSERT。需要通过改进程序来改善分发延迟。
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
zhentamaniub 发表于 2013-2-6 13:58
以下愚见
1.可能是清理作业执行的时候有阻塞,复制分发日志太多的缘故。在停掉其他两个清理作业
Agen ...

Hi,停止掉那两个Job,Distribution clean up:distribution还是执行的相当缓慢.
.第二个方法可以考虑尝试下,谢谢.
第三个的话,应该不是application导致的
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
hwtong 发表于 2013-2-6 14:01
Hi,停止掉那两个Job,Distribution clean up:distribution还是执行的相当缓慢.
.第二个方法可以考虑尝试下 ...

你还是要分析一下的,UPDATE、DELETE、INSERT这3类复制命令,如果有DELETE和INSERT占比高UPDATE占比少的情况,很有可能存在问题。就是说程序是用删除插入的方式去做数据更新了。
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
hwtong 发表于 2013-2-6 14:01
Hi,停止掉那两个Job,Distribution clean up:distribution还是执行的相当缓慢.
.第二个方法可以考虑尝试下 ...

另外针对复制分发延迟,考虑增加并行度(-SubscriptionStreams X),提高执行效率,并行度X建议4。延迟缓解后再改回1(默认的)。修改并行度请慎用,可能引起订阅服务器进程阻塞。
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
zhentamaniub 发表于 2013-2-6 14:24
另外针对复制分发延迟,考虑增加并行度(-SubscriptionStreams X),提高执行效率,并行度X建议4。延迟缓解 ...

多谢.
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
你可以参考一下这篇文章:事务复制清除的故障分析
http://blogs.msdn.com/b/apgcdsd/archive/2012/09/07/10347168.aspx
回复

使用道具 举报

千问 | 2012-5-22 15:05:35 | 显示全部楼层
LZ这个问题解决了吗?这个问题我也遇到过,是在sql 2005环境中,观察是Delete的job所执行的内容block其它进程,使新的需要发布的数据无法插入到distribution数据库中,而通过profiler trace 发现是DELETE TOP(2000) MSrepl_commands WITH (PAGLOCK) from MSrepl_commands...这样的语句运行缓慢,当时有想是否可以通过添加特定的索引...但当时还存在IO过载的情况,待IO的问题解决后,这个问题似乎也得到了很大改善,也就没进一步研究了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行