MySQL 事务提交和单条单条 SQL 执行 是否有性能影响

2021-12-24 00:51:34 +08:00
 Renco

是这样的。之前公司赶工做的一个项目,做的有点糟糕。现在公司突然用起来了。最近发现数据量变大,大概 50w 级别的时候,凌晨 1 点的跑批,RDS 的 CPU 使用率长时间百分百。

原先这个跑批是有加事务的,有事务的情况下没有出现过 CPU 使用率那么高的情况。前两天这个跑批上的事务注解去掉了,然后 1 点到 3 点的跑批阶段 CPU 长期维持在 90~100 的使用率。

想问下这种情况事务的有无会对 RDS 的 CPU 使用率有影响吗。

原先一个事务每晚跑批的 insert 数量大概是在 30w 条左右

1702 次点击
所在节点    程序员
5 条回复
Samuelcc
2021-12-24 00:53:52 +08:00
用事务批量跑会快非常多,仅 io 次数就会少很多。
Leviathann
2021-12-24 01:24:50 +08:00
没事务就是一条一个事务
xuanbg
2021-12-24 08:24:52 +08:00
楼主你需要的不是事务,是批量插入! insert table (id, c1, c2, c3) values (1,x,y,z),(2,x,y,z),……
ragnaroks
2021-12-24 08:30:44 +08:00
上面说的都对,默认配置下,每次执行语句(提交)都是事务,batch insert 和 begin insert insert end 效果几乎相同(产生的日志和可回滚粒度不同)
cheng6563
2021-12-24 10:22:41 +08:00
另外,MySQL 驱动的 JDBC 内的批量插入功能,必须要在连接字符串上加参数 rewriteBatchedStatements=true ,默认情况下的批量插入就是摆设

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/824116

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX