数据库教程:关于清理distribution数据库过期数据

关于清理distribution过期数据   做过replication的人都知道,distribution数据库会不断的增大,特别是操作平凡,数据增长是相当吓人的。

关于清理distribution过期数据

 

做过replication的人都知道,distribution数据库会不断的增大,特别是操作平凡,数据增长是相当吓人的。可以一下子增加到5g以上。

 

当时我被吓到了。不知如何是好?重新做replication的话是可以,但是不可能每次都因为distribution数据库过大就做,这样太浪费时间。

 

最后,我找了很多资料,也尝试了其实很简单。只需要执行sql query就ok

 

  select name, log_reuse_wait, log_reuse_wait_desc   from sys.databases  where name = 'distribution'    --(shows breakout by day, by hour.  took 2 hours on 350million rows, 100gb distribtuion db)  select t.[publisher_database_id]  ,datepart(mm,[entry_time]) 'month'  , datepart(dd,[entry_time]) 'day'  , datepart(hh,[entry_time]) 'hour'      ,count(c.[xact_seqno]) 'count of commands'  from [distribution].[dbo].[msrepl_transactions](nolock) t   join [msrepl_commands](nolock) c   on t.[xact_seqno] = c.[xact_seqno]  group by t.[publisher_database_id]    ,datepart(mm,[entry_time])    , datepart(dd,[entry_time])    , datepart(hh,[entry_time])  order by 1,2,3,4    --or, just select oldest 10 rows and note the entry_time stamp.  --(select took 5 minutes on 350million rows, 100gb distribtuion db)  select top 10 * from [distribution].[dbo].[msrepl_transactions](nolock)    exec dbo.sp_msdistribution_cleanup @min_distretention = 0, @max_distretention = 120     sp_helptext  sp_msdelete_publisherdb_trans    alter procedure sp_msdelete_publisherdb_trans    sp_helptext sp_msdelete_dodelete

 

 

–以上代码只需要执行第一次就ok。

 

–下面两行代码就是要直接执行多次,直接执行到影响的行数为0就ok了。记得要shrink distribution数据库。

  delete top(20000) msrepl_commands    delete top(50000) msrepl_transactions

 

 

需要了解更多数据库技术:关于清理distribution数据库过期数据,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/625940.html

(0)
上一篇 2021年5月25日
下一篇 2021年5月25日

精彩推荐