首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微软同步Ado.Net -效率,如何提高它?

微软同步Ado.Net -效率,如何提高它?
EN

Stack Overflow用户
提问于 2012-09-14 00:47:16
回答 3查看 1K关注 0票数 1

今天我终于设法运行了客户端(windows移动设备)- wcf - sql server 2008同步(在经历了许多问题后,主要用于MS部分)

我做了测试。对于24000条记录,快照的平均时间约为1分20秒。这是我下载Microsoft Sync for ADO.NET的修补程序后的时间。

我还发现,在50秒之后,数据库文件终于开始增长,大约需要25秒。

框架在前50秒做了什么?加载和序列化数据?

在某个页面上,我找到了一篇关于代理序列化的文章,它可以减少传输的数据量。

您知道同步过程是否会从中受益吗?(我的意思是在热修复之后用于Ado.net的MS同步?)

我能做些什么来加速这个过程吗?在我看来,24000的1分24秒太多了…

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-14 01:06:11

设备的同步框架有两个主要问题:

  1. 它通过ADO.NET Datasets交换数据
  2. 在客户端设置客户端数据库以获得同步支持时,在“初始”synchronization.
  3. SQL CE上执行插入时速度非常慢。

你提到的热修复尽可能地解决#3,所以你在那里没什么可做的了。

第二个是同步框架的一部分,我担心对它无能为力。

至于#1,这是这50秒中的大部分时间(可能是30秒左右?)当客户端接收到dataset时,它必须先反序列化整个流(其中流由极其冗长的XML组成),然后才能开始处理。对于大型数据集(10,000+行),这可能需要很长时间,并且一旦可用堆内存耗尽,甚至可能(并且最终将)导致内存崩溃的情况。

您引用的序列化代理方法将大大减少交换的响应流的大小(在我的测试中,在某些情况下,它几乎小了90% )。这肯定会在一定程度上缩短响应时间,特别是在网络连接吞吐量有限的情况下。但是,在客户端处理开始之前,必须将流反序列化为DataSet,这一事实是无法回避的。

总而言之:是的,代理序列化方法将减少正在传输的数据量,您可能会实现一些改进,但改进程度将取决于以下因素:

可用的device memory

  • device处理器速度和availability

的dataset

  • amount的

  • 大小

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2012-09-14 09:41:40

同步时会发生三件事: 1.它需要枚举已发生的更改

  1. 它需要将它发送到目标
  2. 它需要应用它

对于枚举,数据库的大小会有很大的影响。而且,即使没有任何更改,这种检查也会产生一些性能损失。

请参阅:Synchronization Services for ADO .NET for Devices: Improving performance by skipping tables that don’t need synchronization

对于item #2,数据集序列化是瓶颈。您可能会选择使用数据集代理,甚至是压缩,但在执行代理和压缩时,您可能看不到巨大的性能改进。

请参阅:Sync Framework WCF-based Synchronization for Offline scenario – Using custom dataset serialization

对于第1项和第2项,您可以应用与数据库相同的性能调优,例如通过过滤、调优索引等仅同步所需的行。

毕竟,Sync Fx应用程序就像其他数据库应用程序一样。

票数 1
EN

Stack Overflow用户

发布于 2012-09-14 02:56:27

如果你使用的是SyncFx 2.1库(SynchOrchestrator而不是SyncAgent),那么SyncFx已经在使用DataSet代理序列化了--它是内置的。

为了避免与数据集相关的内存不足问题,您可以查看批处理,以找到限制每次同步可以发送的记录数的方法。这在某种程度上可以使用任何一组SyncFx库来完成,但是使用2.1库比使用1.0库更具确定性。

*确定性: 2.1库允许您指定最大字节数,SyncFx将在符合该限制的最后一整行时自动截断内容。我相信,对于1.0库,执行批处理的唯一方法是指定最大行数,并希望(或仔细计算)数据不会超过您想要达到的限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12411045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档