除非有时间,否则一次可以执行多少行

时间:2011-01-14 12:22:44

标签: sql-server sql-server-2005

我在sql 2005服务器上工作 我有近350 000个插入脚本..插入脚本有10列要插入。

那么我应该选择一次点击执行多少行。 “执行”点击..

请根据平均系统配置告诉我平均数。

赢得XP Cor 2 Duo 3,66 Gb ram

3 个答案:

答案 0 :(得分:2)

好的,让我们直截了当地说明一些事情:

  

Win XP Cor 2 Duo 3,66 Gb ram

不平均但过时。最重要的是它完全错过了db的最重要的nubmer,即光盘的速度/数量。

  

我在sql 2005服务器上工作   近350 000个插入脚本..

我严重怀疑你有350.000插入SCRIPTS。这将是包含插入命令的350.000个文件。这是很多文件。

  

插入脚本有10列   插入

我点了一份比萨饼。我的车每公里需要多少燃料?相同的关系。 10列很不错,但你不会说你的脚本包含多少个插入命令。

所以,最后只有SENSIBLE解释是你必须插入350.000行,并尝试从程序中执行(即没有脚本可以开始),但这绝对不是你说的。

  

那么我应该选择多少行   一键执行

我应该用一部电话订购多少个比萨饼?点击这里是无关紧要的。当您使用命令行程序执行isnerts时,它也不会变得更快。

问题是如何最快地插入数据库。

  • 对于普通的SQL:

    • 批量插入。像50或100一样的声明(是的,你可以在一个命令中写入多个插入)。
    • 提交交错异步,准备下一个语句,同时执行前一个语句。
    • 这很灵活,因为你可以做真正的sql等。
  • 用于实际质量插入:

    • 忘记编写insertstatements的想法。按照表结构正确准备数据,使用SqlBulkCopy批量插入数据。
    • 不太灵活 - 但速度更快。

我的SMALL(!)数据库计算机上的后一种方法会在字段很小的情况下在3-5秒内处理这个问题(你知道,字段dan是2gb二进制数据)。我每秒处理大约80.000行isnerts而没有很多优化,但我有少量和少量的字段。这是4个处理器内核(irrelvant,它们永远不会繁忙),8gb RAM(对于数据库服务器非常小,在这种情况下也无关紧要),以及6个用于Raid 10中数据的vlociraptors(同样,一个小型配置用于数据库,非常相关)。我在活动监视器中获得了每秒150mb的峰值插入。我会在这里进行大量的优化,因为我在每20,000个项目打开/关闭一个数据库连接......糟糕的批处理。

但是,你似乎根本没有数据库系统,只是安装在低端工作站上的数据库,这意味着与数据库服务器相比,你的IO将会非常慢,并且插入速度/更新速度是IO绑定。桌面光盘很糟糕,你在同一张光盘上有数据和日志。

但是....最后,你真的没有告诉我们你的问题。

并且......可以在连接对象上以编程方式设置超时。

答案 1 :(得分:1)

我很确定用户可以通过服务器属性设置超时 - >连接 - >远程查询超时。如果你将它设置得足够高(或者设置为0,这意味着它永远不会超时),那么你可以运行任意数量的脚本。

显然,如果数据库尚未生效,这只是好的 - 你只需要填充。如果数据来自另一个MS SQL Server,您可能只想进行完全备份和还原 - 这将更简单,更快捷。

This may be of help.

答案 2 :(得分:1)

一般的经验法则是每个UI操作不超过0.1秒,以获得出色的性能。您将需要进行基准测试以找出它是什么。