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

时间:2010-03-13 09:58:18

标签: c# entity-framework sql-server-2008

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

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

3 个答案:

答案 0 :(得分:6)

不通过互联网使用SQL的几个原因。

  • 一,对我而言,它会造成太大的影响 暴露sql的风险 服务器在互联网上。我不想要SQL攻击:)。如果你vpn 交通,然后这是一个不同的故事 因为中间人的攻击是 那更难了。
  • 二,SQL 协议是一个“健谈”协议,所以a 服务器之间的链接高 延迟会影响您的查询a 很多。

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

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

答案 1 :(得分:1)

我会考虑发送一个类似于CSV的字符串,并将所有数据发送到存储过程,然后在服务器上,存储过程将使用SQL函数拆分数据并使用它创建临时表,然后存储过程将继续进行检查并在必要时插入。

答案 2 :(得分:0)

除了Mikael Svenson所写的内容之外。

您可以通过“强力”克服延迟并在多个数据库连接上运行。但总的来说,我真的推荐Mikael的建议。