美文网首页
MySQL如何避免长事务对业务的影响?

MySQL如何避免长事务对业务的影响?

作者: 夜空中乄最亮的星 | 来源:发表于2020-11-26 20:18 被阅读0次

这个问题,我们可以从应用开发端和数据库端来看。

从应用开发端排查

  1. 确认是否使用了 set autocommit=0。这个确认工作可以在测试环境中开展,把 MySQL 的 general_log 开起来,然后随便跑一个业务逻辑,通过 general_log 的日志来确认。一般框架如果会设置这个值,也就会提供参数来控制行为,你的目标就是把它改成 1。

  2. 确认是否有不必要的只读事务。有些框架会习惯不管什么语句先用 begin/commit 框起来。我见过有些是业务并没有这个需要,但是也把好几个 select 语句放到了事务中。这种只读事务可以去掉

  3. 业务连接数据库的时候,根据业务本身的预估,通过 SET MAX_EXECUTION_TIME 命令,来控制每个语句执行的最长时间,避免单个语句意外执行太长时间。

其次,从数据库端来看

  1. 监控 information_schema.Innodb_trx 表,设置长事务阈值,超过就报警 / 或者 kill;
  2. Percona 的 pt-kill 这个工具不错,推荐使用;
  3. 在业务功能测试阶段要求输出所有的 general_log,分析日志行为提前发现问题;
  4. 如果使用的是 MySQL 5.6 或者更新版本,把 innodb_undo_tablespaces 设置成 2(或更大的值)。如果真的出现大事务导致回滚段过大,这样设置后清理起来更方便。

相关文章

  • MySQL如何避免长事务对业务的影响?

    这个问题,我们可以从应用开发端和数据库端来看。 从应用开发端排查 确认是否使用了 set autocommit=0...

  • 如何避免长事务

    MySQL的长事务会因为事务视图太老,MVCC时中需要执行很多的回滚操作才能得到对应的数据版本,而且还会形成很大的...

  • mysql优化之路(初级)

    一条查询语句是怎么执行的? 一条更新语句是怎么运行的? 什么是事务?什么是长事务?如何避免长事务? 如何启动一个事...

  • MySQL高级知识-MySQL性能因素

    影响MySQL的性能因素 1、业务需求对mysql的影响(合适合度) 例如: 买家卖家评论帖子实时统计???要求:...

  • MYSQL事务的4个级别

    平常我们做业务的时候会经常用到事务,但是很少去关心事务的级别,实际上事务的级别的不同,对业务会产生不小的影响,比如...

  • mysql避免大事务

    定义 运行时间较长,操作比较多的事务 缺点 会长时间锁定资源,造成大量阻塞。只有在大事务执行完毕后锁才会释放。 长...

  • Golang Mysql笔记(四)--- 事务

    Transaction 事务 事务处理是数据的重要特性。尤其是对于一些支付系统,事务保证性对业务逻辑会有重要影响。...

  • MySQL实战问题解决

    一、系统粒粒面应该避免长事务,如果你是业务开发负责人同时也是数据库负责人,你会有什么方案来避免出现或者处理这种情况...

  • 03 | 事务隔离:为什么你改了我还看不见?

    系统里面应该避免长事务,如果你是业务开发负责人同时也是数据库负责人,你会有什么方案来避免出现或者处理这种情况呢?如...

  • MySQL白菜教程(Level 8)

    MySQL Transaction MySQL 事务以及如何使用 COMMIT 和 ROLLBACK 语句来管理 ...

网友评论

      本文标题:MySQL如何避免长事务对业务的影响?

      本文链接:https://www.haomeiwen.com/subject/tvpziktx.html