我们在Azure Sql数据同步方面遇到了性能问题,跟踪表很大,而且可能比源表(跟踪表的大小为2-10GB)大。这使得数据异步非常慢,而db非常密集。在日志记录表中,这尤其痛苦,因为我们每个月都可以生成大量的数据。
阅读https://jtabadero.wordpress.com/2012/08/23/things-you-need-to-know-about-sql-data-sync-service/项目17
数据同步服务定期进行元数据清理。这将从跟踪表中删除超过保留期的项。 例如,当这些更改长期传播到成员数据库时,保留已删除行的元数据是没有意义的。 目前,这一保留期定为45天。这意味着删除45天前删除的行的元数据将被清除。如果某个成员在此保留期内没有同步,则服务将检测到它是一个过时的成员,并防止该成员同步。
听起来好像有一种方法可以安全地减少这些数据,是否有一种方法可以在更短的时间内触发这些数据呢?我们的数据库在一天内同步了很多次,并且在1天的保留数据时可以安全地修剪。
发布于 2016-05-01 21:01:57
我使用下面的脚本来“温和地”删除大量数据。通过使用最后一次同步时间,可以将删除同步删除命令的可能性降到最低。
declare @last_Sync datetime
set @last_Sync = '5-1-16 5:00pm'
select count(*) from datasync.XXX_dss_tracking with(nolock) where sync_row_is_tombstone=1 and last_change_datetime < @last_Sync
declare @i int
set @i=0
while (@i<100) begin
delete from datasync.XXX_dss_tracking where xxx_id in
(select top 1000 xxx_id from datasync.XXX_dss_tracking with (nolock) where sync_row_is_tombstone=1 and last_change_datetime < @last_Sync)
set @i=@i+1
endhttps://stackoverflow.com/questions/35993833
复制相似问题