✅MySQL执行大事务会存在什么问题?

前言

之前在如何实现百万级数据从Excel导入中有提到一句不建议利用大事务进行一个错误处理。为什么不建议呢。本次来简单说一下。

实现百万级数据从Excel导入的文章: 实现百万级数据从Excel导入到数据库的方式

所谓大事务,通常指包含大量要执行的SQL语句和较长执行时间的事务。

这样的大事务往往会带来诸多问题。如下:

  1. 占用数据库连接:这一点很好理解。随着SQL语句的增多,执行时间也会相应延长。大型事务会持续占用数据库连接,由于数据库连接资源有限,长时间占用可能导致其他事务无法获取连接,从而降低系统的吞吐量,影响系统的可用性。

  2. 难以回滚:大事务涉及的数据量较大,回滚操作可能变得异常耗时。若事务需要回滚或失败,可能需要花费大量时间才能完全撤销所有修改,对数据库的可靠性和性能造成不利影响。

  3. 锁竞争:大事务可能引发繁琐的写操作,导致数据的锁定。这可能导致其他并发事务在访问相同资源时遭遇锁竞争,进而造成性能下降和延迟增加。长时间的锁定还可能导致其他事务的等待和阻塞。

  4. 日志空间占用:大事务可能产生大量日志,特别是 binlog。当单个事务超出最大允许的Binlog文件大小限制(max_binlog_cache_size),会出现错误:Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again

解决方案:

拆分事务,将大事务分解为多个小事务。将不需要在事务中执行的操作(如读取、内存计算、I/O操作、远程调用等)移到事务外部处理。

如有问题,欢迎加微信交流:w714771310,备注- 技术交流 。或微信搜索【码上遇见你】。

免费的Chat GPT可微信搜索【AI贝塔】进行体验,无限使用。

好了,本章节到此告一段落。希望对你有所帮助,祝学习顺利。

相关推荐
十年Java程序媛8 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓8 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
全栈弄潮儿9 小时前
Python实战第7期:字典与集合
后端·python·编程语言
ben9518chen9 小时前
mysql数据库基本操作
数据库·mysql
码事漫谈9 小时前
DeepSeek 又更新!但怎么有个分数往下掉?
后端
吃饱了得干活9 小时前
用 PageHelper 同步数据到 ES:能跑,但这几个坑得先知道
后端·elasticsearch
金銀銅鐵9 小时前
[Java] 借助GUI展示class文件的内容(v1.0版本)
jvm·后端·ai编程
皮皮林5519 小时前
Java 导出 Excel 利器:JXLS
后端
吃饱了得干活9 小时前
从 LIKE 查询到毫秒级搜索:Elasticsearch 核心原理与 Java 实战
后端·elasticsearch