2011-01-14 66 views
1

我在SQL 2005服务器上工作 我有近350万个插入脚本..插入脚本有10列要插入。一次可以执行多少行,除非得到超时

因此,我应该选择多少行来执行一次点击。 “执行” 点击..

根据均线系统配置请告诉我一个平均数..

Win XP的 林2双核 3,66 GB的RAM

回答

2

好吧,让我们有些东西直奔这里:

Win XP的心病2双核3,66 GB内存

不是平均水平,但已经过时。在顶部它完全错过了最重要的数据库,这是速度/光盘数量。

我SQL 2005服务器上的工作,我有 几乎350 000插入脚本..

我严重怀疑你哈弗350.000插入脚本。 THI将是包含插入命令的350.000个文件。这是很多文件。

插入脚本有10列被插入 插入。

我点了披萨。我的车每公里需要多少燃油?同样的关系。 10列是很好的,但你不知道你的脚本包含多少插入命令。

因此,最后唯一的SENSIBLE解释是你必须插入350.000行,并尝试从一个程序(即没有脚本开始),但这绝对不是你说的。

那么有多少行,我应该选择要 在点击

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

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

  • 对于正常SQL:

    • 批次的插入件。像50或100合并成一个语句(是的,你可以在一个命令中写入多个插入)。
    • 将它们提交交错异步,准备下一条语句,同时执行一条语句。
    • 这是非常灵活的,因为可以宥真正大规模刀片做实SQL等
    • 忘记写insertsstatements的想法。根据表结构准确地准备数据,使用SqlBulkCopy来批量插入它们。
    • 不太灵活 - 但很快就可以了。

我SMALL(!)数据库计算机时的字段小(一丹领域是一个2GB的二进制数据的东西,你知道的)将处理这个约3-5秒后一种方法。我每秒钟处理大约80,000行isnerts而没有很多优化,但是我有一些小的领域。这是4个处理器内核(不相关,他们从来没有忙),8GB内存(对于数据库服务器非常小,在这种情况下也是不相关的),以及6个用于Raid 10中数据的vlociraptors(同样,数据库,但非常相关)。在活动监视器中,我在150mb每秒范围内获得峰值插入。我会在这里做很多优化,因为我此刻打开/关闭一个db连接,每20.000个项目...不好的配料。

但是,您似乎根本没有数据库系统,只是安装在低端工作站上的数据库,这意味着与数据库服务器相比,您的IO将会非常慢,并且插入速度/更新速度IO界限。台式机光盘吸盘,并且在同一张光盘上有数据和日志。

但是....最后你不会真的说出你的问题。

And ...超时值可以通过编程方式在连接对象上设置。

1

我敢肯定的超时可以由用户通过去服务器属性 - >连接 - >远程查询超时设置。如果将此设置得足够高(或设为0,这意味着它永不超时),那么您可以根据需要运行尽可能多的脚本。

显然这只有在数据库还没有活的时候才可以 - 而且你只需要填充。如果数据来自另一台MS SQL Server,但您可能只想进行完全备份和恢复 - 这将更简单快捷。

This may be of help.

+0

我可以通过选择获取该值吗?然后我可以告诉你在这里计算可以执行的最大行数。 – theklc 2011-01-14 12:26:49

+0

不知道 - 我相信默认是600秒,虽然 – 2011-01-14 12:29:52

1

一般的经验法则是不是优异的性能超过每UI运算0.1秒。您将需要进行基准测试以确定是什么。