我们遇到Azure Sql Data Sync的性能问题,跟踪表非常庞大,并且可能比源表大(跟踪表为2-10GB) . 这使得数据同步非常慢并且数据库密集 . 这在记录表中尤其痛苦,我们每个月都可以生成数据 .
阅读https://jtabadero.wordpress.com/2012/08/23/things-you-need-to-know-about-sql-data-sync-service/第17项
数据同步服务定期执行元数据清理 . 这将从跟踪表中删除超过保留期的条目 . 例如,当这些更改长期传播到成员数据库时,没有必要保留已删除行的元数据 . 目前,此保留期设置为45天 . 这意味着删除超过45天前删除的行的元数据将被清除 . 如果成员在此保留期内未同步,则服务会将其检测为过期成员并阻止该成员进行同步 .
听起来有一种方法可以安全地修剪这些数据,有没有办法在较短的时间内触发它?我们的数据库全天同步多次,保留1天的保留数据是安全的 .
1 回答
从源数据库中删除要删除的所有数据
运行复制并等待它完成
我通常再次运行它,以防更多数据作为正常操作的一部分被删除
停止自动运行的复制
从hub和spoke数据库中的跟踪表中删除tombstone = 1条记录
将您的复制重新打开为自动
我使用下面的脚本更“轻轻地”删除了大量数据 . 通过使用上次同步时间,您可以最大限度地减少删除sync delete命令的可能性 .