如何加快通过互联网将数据保存到数据库?

rob*_*t_d 0 c# entity-framework sql-server-2008

我正在使用C#,Entity Framework和SQL Server 2008 Express.
我通过互联网连接到数据库.
加快将数据保存/更新到数据库的最佳方法是什么?
将180条记录保存到数据库需要87秒.
将相同数量的记录保存到本地(在同一台计算机上)SQL Server上只需3.5秒.

对于我保存/更新的每个记录,我检查数据库中
是否存在具有此主键的记录,如果它不存在,我只需保存它,
如果它存在,我使用ObjectContext.ApplyCurrentValues(entitySetName,currentEntity)方法更新它.

Mik*_*son 6

有几个原因不在互联网上使用SQL.

  • 其一,对我来说,暴露互联网上的SQL服务器会带来太大的风险.我不想要SQL攻击:).如果你对流量进行访问,那么这是一个不同的故事,因为中间人攻击的难度要大得多.
  • 二,SQL协议是一种"聊天"协议,因此具有高延迟的服务器之间的链接会对您的查询产生很大影响.

如果可能的话,我会在SQL端设置一个WCF服务,并让我的客户端将数据发送到服务,该服务将执行对数据库的查询.与SQL相比,任何WCF协议都不那么繁琐,与您现在看到的相比,您很可能获得速度提升.

当然,在传输数据时对数据进行批处理将有助于减少提交记录所需的流量.由于延迟,您希望尽可能少地通过线路进行呼叫.