sql server的执行效率的一次优化

针对SQLServer中上亿数据的批量插入操作进行了性能优化实践,通过调整selectin和insertvalues中的参数数量,发现批量大小并非越大越好,找到合适的批量大小可以显著提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:有大概上亿的数据需要插入,其中会有 select 和 insert 操作


基本方法:利用 sql server 的 select in 和 insert values (), ()进行批量的查询和插入


当表中的数据量超过1000万条的时候出现发现性能太慢,在公司内部的业务下1万多个记录的插入的时候(不止一张表,有多张表的插入,所以插入记录超过1万多),时间需要花费25秒的样子,这样太慢不能接受。


调优的变量是 select in中的 个数以及 insert values中的values的数目,上面的时间实在 个数为800一次batch的情况下表得出的。在调试的时候将这个数目慢慢的调小,等到了100的时候,时间减到了9s左右,减少的粒度还是比较大。


当然速度慢的原因也是因为对数据库和sql语句并不是太了解性能问题,但是这次的优化经验表明批量的处理的时候也并不是一批数据越大越好的,在数据库的量不同得手不同的参数得出的性能结果也很不相同。


这个结论也只是实验结论,至于内部的原理分析目前还没去弄他,后边有机会的话再补充吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值