问:sql server2000,大批量插入时处理性能如何?

天乐_那由他 2006-07-19 09:55:04

假设某表只有简单的两个int字段,每秒要插入5000条记录,它能够胜任吗?应该如何优化插入方法?

另外,希望高手指点如何设计这样的性能测试?

电脑配置按低档服务器设定,设为:

CPU:Intel TM(至强)2.40GHz/512K缓存,533MHz前端总线;
内存:512M DDR内存
硬盘:2块普通SCSI硬盘。



...全文
296 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
天乐_那由他 2006-07-19
  • 打赏
  • 举报
回复
晕,搞错了,好像是毫秒~~~~,许久不碰数据库,啥都忘了哈
天乐_那由他 2006-07-19
  • 打赏
  • 举报
回复
呵呵,上述测试中,
set @dt1=getdate()
create table #(id1 int,id2 int)
应该颠倒位置。
重新测过,仅仅查询插入确实在16微秒左右
天乐_那由他 2006-07-19
  • 打赏
  • 举报
回复
TO:libin_ftsafe(子陌红尘:当libin告别ftsafe) ,wangdehao(找找找(现在很幸福)):

你们说的很对,确实会存在这样的问题。可是如何测试才能找到单表记录数的临界值?希望指点思路。

另外,TO:gahade()

谢谢你的提醒,已经测试过了,确实没有问题,
测试电脑 CPU:P4 2.8GHz,内存:512M DDR266;硬盘:SAMSUNG SP0802N;
应该说比原先假定的要差一些;
结果仅用了3156微秒,而接下来去掉创建表的语句,仅仅插入,只用10~16微秒即可;
第一次测试语句如下:
declare @dt1 datetime
declare @dt2 datetime
set @dt1=getdate()
create table #(id1 int,id2 int)
insert into #(id1,id2)
select top 5000 1,2
from syscolumns a,syscolumns b
set @dt2=getdate()
print datediff(millisecond,@dt1,@dt2)
-----------------------------------------------

(所影响的行数为 5000 行)

3156
-----------------------------------------------
wangdehao 2006-07-19
  • 打赏
  • 举报
回复
子陌兄说的有道理,到你表中的数据达到一定数量后,用什么方式都不会快的

建议分表,分库
子陌红尘 2006-07-19
  • 打赏
  • 举报
回复
每秒增加5000条,一直不停的增加,一个小时之后数据量就回到达18,000,000,随着数据量的增加,性能问题会越来越明显,当到达一个临界值之后,性能将急剧下降。
wwh999 2006-07-19
  • 打赏
  • 举报
回复
lz,以你上面的配置,用寻常的SQL一秒插5K,应该没什么问题。

可以这样,用Bulk Insert试试
云中客 2006-07-19
  • 打赏
  • 举报
回复
关注
gahade 2006-07-19
  • 打赏
  • 举报
回复
create table #(id1 int,id2 int)
insert into #(id1,id2)
select top 5000 1,2
from syscolumns a,syscolumns b
zouqiang122 2006-07-19
  • 打赏
  • 举报
回复
支持一下~~~

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧