Synchronization 微软Ado.Net同步-效率如何提高?
今天,我终于成功地运行了客户端(WindowsMobile设备)-wcf-SQLServer2008同步(在出现了许多问题之后,主要针对MS部分) 我做了测试。对于24000条记录,快照的平均时间约为1分20秒。这是我下载Microsoft Sync for ADO.NET修复程序之后的时间 我还发现,50秒后,数据库文件最终开始增长,大约需要25秒 框架在前50秒做了什么?加载和序列化数据 在某个页面上,我找到了关于代理序列化的文章,它可以减少传输的数据量 您知道同步过程是否会从中受益吗?(我是指修补程序后Ado.net的MS Sync?)Synchronization 微软Ado.Net同步-效率如何提高?,synchronization,compact-framework,microsoft-sync-framework,Synchronization,Compact Framework,Microsoft Sync Framework,今天,我终于成功地运行了客户端(WindowsMobile设备)-wcf-SQLServer2008同步(在出现了许多问题之后,主要针对MS部分) 我做了测试。对于24000条记录,快照的平均时间约为1分20秒。这是我下载Microsoft Sync for ADO.NET修复程序之后的时间 我还发现,50秒后,数据库文件最终开始增长,大约需要25秒 框架在前50秒做了什么?加载和序列化数据 在某个页面上,我找到了关于代理序列化的文章,它可以减少传输的数据量 您知道同步过程是否会从中受益吗?(我
我能做些什么来加快这个过程吗?在我看来,24000的1:24太多了一倍…设备的同步框架有两个主要问题:
- 数据集的大小
- 可用设备内存量
- 设备处理器速度和可用性
希望这有帮助 如果您使用的是SyncFx 2.1库(SynchOrchestrator不是SyncAgent),那么SyncFx将已经在使用数据集代理序列化-它是内置的 为了避免与数据集相关的内存不足问题,您可以查看批处理,以找到限制每次同步可发送的记录数的方法。在某种程度上,这可以通过任何一组SyncFx库来实现,但2.1库比1.0库更具确定性 *确定性: 2.1库允许您指定最大字节数, SyncFx将自动在最后一整行中剪切适合该行的内容 限制。我相信,使用1.0库是 做批处理就是指定最大行数,并希望(或仔细计算)数据 不要超过你想要达到的极限
同步时会发生三种情况: 1.它需要枚举已发生的更改
毕竟,Sync Fx应用程序与其他数据库应用程序一样。同步过程真的会导致设备出现“内存不足”问题吗?老实说,我认为该框架已经“准备好”将如此大的数据传输到sql ce(或者我可能是天真地这么认为的…),我最初的手工同步过程,由于遇到反序列化问题,多次调用以获取部分数据。。。顺便说一下,在“直接模式”下对sql ce的插入非常快,codeplex上还有一个用于批量插入的类,它似乎非常快……是的,它肯定会导致OOM条件。取决于行数和每行的宽度等,但在某一点上,你会击中它。请记住,每个进程最多分配32MB的可用空间。此外,根据您使用的操作系统(WM6.1及以上版本在某种程度上缓解了这一问题),所需的系统库使用了大量内存。呃,有时我真的认为,如果我准备了一个sdf文件,在服务器端有更大的表,并将其上传到移动设备上,效果会更好。。。。无论如何,谢谢你的帮助!是的,如果不需要双向同步,我们的许多应用程序就是这样工作的。我成功地将代理序列化从1:20降到了0:40。这是一个差距:)对,那是我以前的同步版本,当我意识到它不会在WM上运行时,我很失望。