使用新信息进行编辑。
我继承了一个利用MS Sync Framework 2.1将SQL Server CE 3.5 DB与SQL Server 2008 R2同步的项目。十几个表中有大约100万行。其中两个表占总行数的约75%。每天只有几十行更改,并且此辐条和集线器安排中的用户/安装少于10个。 Sync每天只做很少的工作。
此项目的先前版本可以完成“不做任何事”"在1-2分钟内同步(在任一端插入,更新或删除零行)。自从我重新生成.sdf
(包括所有数据)以来,它现在最少需要9分钟,而对于某些用户来说则要长得多。
通过启用详细同步日志记录,并将新日志文件与旧日志文件进行比较,我将问题缩小为一种类型的操作。所有额外时间都记录在记录为"枚举表xxxxx"的插入中的步骤中。 (等待转到服务器的客户端插入)。较大的表比较小的表占用更长的时间,但是对于这一个操作,所有这些表都按比例增加,并且显着增加,即使结果是零行。
编辑:在同步日志中出现的似乎不受支持的查询语法(对于SQL Server CE)显然只与服务器资源管理器查询窗口结合使用时无效。它在VS T-SQL编辑器中工作正常。我现在比较了两个实际的查询计划。他们是一样的。从某种意义上说,扫描大桌子并不奇怪。但是,在T-SQL编辑器中,它在任一DB上都需要相同的时间(~35秒)。显然,在该操作期间,同步引擎中正在发生更多事情;即使结果在所有情况下都是零行。
当我继承该项目时,它只是轻微升级的一半,但我没有在源代码管理历史中看到任何突出的东西。没有文档准确描述以前的开发工作站设置。我已将所有表,列和索引与旧版.sdf
进行了比较。新的.sdf
和较旧的.sdf
大小相同。没有我所知道的新图书馆。我彻底难倒了。
我在俯瞰什么?