sql server大量数据插入的总结
简单的优化方法:
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,所以只能做些粗略的测试,看起来偶的程序,主要瓶颈不是在与数据存储(尚未测试多线程插入是不是会更慢)。
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分享到: | |
| |
