sql server大量数据插入的总结

2009年5月25日 | 分类: 数据库技术 | 标签: ,

简单的优化方法:
1.将数据库恢复模式改为简单,基本能提高一倍速度。
自己测试获得的结果:
1.使用SET IMPLICIT_TRANSACTIONS ON可以强制进行事务提交,不执行Commit不能提交数据

2.如果使用存储过程插入数据,上面的命令无效,每秒大概1350条(20万大概2.5分钟)

3.使用delphi+ado+存储过程插入数据大概速度是每秒1350条左右,使用第一种能够提高到3000左右(20万1分14),是偶自己的测试。

4.使用查询管理器执行存储过程,大概3200条左右,比上秒稍快。

5.使用第一种方法,数据插入过程中,会造成锁表导致其他数据操作不能进行。

6.使用第一种方法,直接在Sql server查询管理器,可以达到20000条的速度

7.按照6方法执行过后,会影响之后4的速度,使4的速度提高到6低点的水平,不知道为什么。

测试不太精确,大概意思可以得到,如果强制使用事务提交,可以增加插入速度2倍多,但是事务处理过程中,会锁表,影响其他线程数据插入,对于多线程有些问题。

偶也不是DBA,所以只能做些粗略的测试,看起来偶的程序,主要瓶颈不是在与数据存储(尚未测试多线程插入是不是会更慢)。

select getdate()
DECLARE @i int,@return_value int,@ReturnValue int
set @i=0
BEGIN TRAN
while(@i<200000)
begin
INSERT INTO [ZhongJiQun]([FNetWorkName],[FZhongJiQunMing],[FZhongJiQunHao],[FStatus],[FBenDuanXinLingDian],[FDuiDuanXinLingDian],[FJuXiangMing],[FJuXiangHao],[FQiShiCic],[FJieShuCic],[FZhongJiQunFangXiang],[FDianLuTuoPuLeiXing],[FDaiKuan],[FLeiXing],[FVMGW])VALUES(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)
set @i=@i+1
end
commit TRAN
select getdate()
select count(*) from zhongjiqun
EXEC @return_value = [dbo].[proc_cj_Insert_ZhongJiQun]
@FNetWorkName = ‘eee’,
@FZhongJiQunMing = ‘eee’,
@FZhongJiQunHao = ‘eee’,
@FStatus = ‘eee’,
@FBenDuanXinLingDian = ‘eee’,
@FDuiDuanXinLingDian = ‘eee’,
@FJuXiangMing = ‘eee’,
@FJuXiangHao = ‘eee’,
@FQiShiCic = ‘eee’,
@FJieShuCic = ‘eee’,
@FZhongJiQunFangXiang = ‘eee’,
@FDianLuTuoPuLeiXing = ‘eee’,
@FDaiKuan = ‘eee’,
@FLeiXing = ‘eee’,
@FVMGW = ‘eee’,
@ReturnValue = @ReturnValue OUTPUT

anyShare分享到:
          
目前还没有任何评论.