写点什么

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

作者:派大星
  • 2024-04-15
    辽宁
  • 本文字数:712 字

    阅读完需:约 2 分钟

前言

之前在如何实现百万级数据从 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贝塔】进行体验,无限使用。


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

发布于: 刚刚阅读数: 5
用户头像

派大星

关注

微信搜索【码上遇见你】,获取更多精彩内容 2021-12-13 加入

微信搜索【码上遇见你】,获取更多精彩内容

评论

发布
暂无评论
✅MySQL执行大事务会存在什么问题?_MySQL_派大星_InfoQ写作社区