更新时间:2026-03-19 GMT+08:00
如何查询久未提交的长事务并处理相应会话
长事务可能是业务侧根据自身需求设计,但也可能是begin或start transaction之后忘记提交(事务泄漏)。一直不提交的长事务会导致锁冲突、Undo log堆积等后果。排查长事务可以使用以下语句:
SELECT * FROM information_schema.innodb_trx order by trx_started asc limit X;
按照事务开始时间排序,从最早开始列出X条。
输出结果的trx_started 为事务开始时间,trx_mysql_thread_id为对应的会话ID。根据相应会话ID在processlist中的信息,判断如何处理长事务所在的该会话(提交/回滚/预期内保持不动/KILL)。