数据库进行大数据量插入/更新操作

本文讨论了数据库中批量数据插入的不同方式及其性能优化策略。通过对比单条插入与批量插入的方法,详细介绍了批量插入中有序与无序的区别及各自的优势。同时,文章还提供了具体的SQL语句长度限制和事务大小控制等注意事项。

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

插入(更新)大量数据的方式

 插入的方式有很多种:

第一种:一条一条数据插入

第二种:批量插入

批量插入的时候,也要分为有序插入与无序插入

无序:

有序

性能对比:

解释原因:

①单条数据插入插一条,提交一次事务。

②批量插入可以自己规定条数进行事务提交,事务提交次数会变少。

③有序比无序好是因为索引的原因,有序数据索引定位较为方便,不需要频繁对磁盘进行读写操作。

注意事项:

1.SQL语句有长度限制,默认是1M,可以修改

2.事务需要控制大小,太大会影响执行效率。MySql有innodb_log_buffer_size配置,超过该这个值会把innodb的数据刷到硬盘中,这时,效率会有所下降。

最终优化方案:

  将自动提交事务autocommit,进行插入/更新操作的时候,手动分批commit,分批条数限制100,或者200.比如一万条update,按照每100条就commit一次,1000update总共需要100个事务,每次锁住100条数据。

如果直接全部提交事务,那么锁住数据太多,外部select进不来,大量连接等待获取行锁,影响数据库对外服务能力。

参考:大批量数据高效插入数据库表 - myseries - 博客园 (cnblogs.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值