‘distribution cleanup job’作业用于清除distribution库中事务(已经/没有同步到订阅的事务,这取决于具体参数),如果禁止该作业,那么由log reader agent传递到分发库的数据就会越积越多. 而distribution agent会扫描相应的表,将数据传递到订阅库.因此过多的数据会造成distribution agent效率低下,一起复制的延迟等…, 并且也会引起distribution库文件扩张.
‘distribution cleanup job’默认每10分钟执行一次,调用下面这个存储过程来完成清除工作.
EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 72
@min_distretention 表示当事务被传送到订阅后,最小保留的时间. 这里是0小时,表示事务被传递到订阅后会被立刻删除
@max_distretention 表示没有被传递到订阅的事务的最长保留时间.这里是72小时,即如果一些事务在72后仍然没有被传递到订阅,会被删除掉,这会造成发布库和订阅库数据的不一致.
sp_MSdistribution_cleanup会去移除过期的订阅并---删除MSrepl_commands表和MSrepl_transactions表中的数据,并删除相应的快照文件
cleanup会删除48小时以前的历史记录。
‘Agent History Clean Up’作业会清除历史记录:
从 MSmerge_history 中删除了 0 条历史记录。
从 MSmerge_articlehistory 中删除了 0 条历史记录。
从 MSsnapshot_history 中删除了 0 条历史记录。
从 MSlogreader_history 中删除了 0 条历史记录。
从 MSdistribution_history 中删除了 0 条历史记录。
从 MSqreader_history 中删除了 0 条历史记录。
从 MSrepl_errors 中删除了 0 条历史记录。
从 sysreplicationalerts 中删除了 0 条历史记录。
从 MStracer_tokens 中删除了 0 条历史记录。
Reference:
Administering Replication Agents
sp_MSdistribution_cleanup parameters