假设某表只有简单的两个int字段,每秒要插入5000条记录,它能够胜任吗?应该如何优化插入方法?另外,希望高手指点如何设计这样的性能测试?电脑配置按低档服务器设定,设为:CPU:Intel TM(至强)2.40GHz/512K缓存,533MHz前端总线;
内存:512M DDR内存
硬盘:2块普通SCSI硬盘。

解决方案 »

  1.   

    create table #(id1 int,id2 int)
    insert into #(id1,id2)
    select top 5000 1,2 
    from syscolumns a,syscolumns b
      

  2.   

    lz,以你上面的配置,用寻常的SQL一秒插5K,应该没什么问题。可以这样,用Bulk Insert试试
      

  3.   

    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
    -----------------------------------------------
      

  4.   

    呵呵,上述测试中,
    set @dt1=getdate()
    create table #(id1 int,id2 int)
    应该颠倒位置。
    重新测过,仅仅查询插入确实在16微秒左右