千家信息网

查看MySQL最近的事务执行信息

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,课题:查看MySQL最近的事务执行信息*虽然我们可以通过查询慢查询日志查询到一条语句的执行总时长,但是如果数据库中存在一些大事务在执行过程中回滚了,,或者在执行过程中异常终止了,这个时候慢查询日志中是
千家信息网最后更新 2026年11月01日查看MySQL最近的事务执行信息

课题:查看MySQL最近的事务执行信息

*虽然我们可以通过查询慢查询日志查询到一条语句的执行总时长,但是如果数据库中存在一些大事务在执行过程中回滚了,,或者在执行过程中异常终止了,这个时候慢查询日志中是不会记录的,这时需要借助
performance_schema的 events
transactions-的表来查看与事务相关的记录,在这些表中详细记录了是否有事务被回滚,活跃(长时间未提交的事务也属于活跃事务)活已提交等信息。**

下面模拟几种事务情况,并查看事务事件记录表:

事务事件,默认是没启用的,首先需要进行配置启用

root@localhost [performance_schema]>select * from setup_instruments where name like 'transaction';+-------------+---------+-------+| NAME        | ENABLED | TIMED |+-------------+---------+-------+| transaction | NO      | NO    |+-------------+---------+-------+1 row in set (0.00 sec)root@localhost [performance_schema]>select * from setup_instruments where name like '%transaction%';+--------------------------------------------------------------------------------+---------+-------+| NAME                                                                           | ENABLED | TIMED |+--------------------------------------------------------------------------------+---------+-------+| wait/synch/mutex/sql/LOCK_transaction_cache                                    | NO      | NO    || stage/sql/Waiting for preceding transaction to commit                          | NO      | NO    || stage/sql/Waiting for dependent transaction to commit                          | NO      | NO    || transaction                                                                    | NO      | NO    || memory/performance_schema/events_transactions_summary_by_account_by_event_name | YES     | NO    || memory/performance_schema/events_transactions_summary_by_host_by_event_name    | YES     | NO    || memory/performance_schema/events_transactions_summary_by_thread_by_event_name  | YES     | NO    || memory/performance_schema/events_transactions_history                          | YES     | NO    || memory/performance_schema/events_transactions_summary_by_user_by_event_name    | YES     | NO    || memory/performance_schema/events_transactions_history_long                     | YES     | NO    || memory/sql/THD::transactions::mem_root                                         | YES     | NO    |+--------------------------------------------------------------------------------+---------+-------+11 rows in set (0.00 sec)

查看最近的事务执行信息:

开启事务生产者的参数:

root@localhost [performance_schema]>update setup_instruments set enabled='yes',timed='yes' where name like 'transaction';Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0root@localhost [performance_schema]>update setup_instruments  set enabled='yes' where name like '%transaction%';Query OK, 3 rows affected (0.00 sec)Rows matched: 11  Changed: 3  Warnings: 0

登录mysql会话1,执行清理,避免其他事务的干扰:
提示:线上最好不要直接truncate清除

root@localhost [performance_schema]>truncate events_transactions_current;truncate events_transactions_history; truncate events_transactions_history_long;root@localhost [performance_schema]>select * from events_transactions_current;Empty set (0.00 sec)root@localhost [performance_schema]>select * from events_transactions_history;Empty set (0.00 sec)root@localhost [performance_schema]>select * from events_transactions_history_long;Empty set (0.00 sec)

开启新的会话2,用于执行事务,并模拟事务的回滚:

root@localhost [test001]>begin;Query OK, 0 rows affected (0.00 sec)root@localhost [test001]>update test1_event set username='fox' where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0root@localhost [test001]>rollback;Query OK, 0 rows affected (0.00 sec)

在会话1查看当前活跃的事务,查看结果却是空值:

root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current\GEmpty set (0.00 sec)root@localhost [(none)]>
root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_history_long\GEmpty set (0.00 sec)root@localhost [(none)]>
root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_historyEmpty set (0.00 sec)root@localhost [(none)]>

查看结果却是空值,原因是MySQL消费者参数setup_consumers这一块没开启

root@localhost [performance_schema]>select * from setup_consumers where name like '%transaction%';+----------------------------------+---------+| NAME                             | ENABLED |+----------------------------------+---------+| events_transactions_current      | NO      || events_transactions_history      | NO      || events_transactions_history_long | NO      |+----------------------------------+---------+3 rows in set (0.01 sec)

开启消费者参数:

root@localhost [performance_schema]>update setup_consumers  set enabled='yes' where name like '%transaction%';Query OK, 3 rows affected (0.00 sec)Rows matched: 3  Changed: 3  Warnings: 0root@localhost [performance_schema]>select * from setup_consumers where name like '%transaction%';+----------------------------------+---------+| NAME                             | ENABLED |+----------------------------------+---------+| events_transactions_current      | YES     || events_transactions_history      | YES     || events_transactions_history_long | YES     |+----------------------------------+---------+3 rows in set (0.00 sec)

这些消费参数在分析完事务后记得关闭,关闭命令如下:

update setup_consumers  set enabled='no' where name like '%transaction%';

再次在会话1查看当前活跃的事务:

root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current\G*************************** 1. row ***************************         THREAD_ID: 3957325        EVENT_NAME: transaction             STATE: ACTIVE            TRX_ID: NULL              GTID: AUTOMATIC            SOURCE:         TIMER_WAIT: 85087447373000       ACCESS_MODE: READ WRITE   ISOLATION_LEVEL: REPEATABLE READ        AUTOCOMMIT: NO  NESTING_EVENT_ID: 27NESTING_EVENT_TYPE: STATEMENT1 row in set (0.00 sec)

在会话2 上rollback回滚事务:

root@localhost [test001]>begin;Query OK, 0 rows affected (0.00 sec)root@localhost [test001]>update test1_event set username='fox' where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0root@localhost [test001]>rollback;Query OK, 0 rows affected (0.00 sec)

再次在会话1查看当前活跃的事务:

root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current\G*************************** 1. row ***************************         THREAD_ID: 3957325        EVENT_NAME: transaction             STATE: ROLLED BACK            TRX_ID: NULL              GTID: AUTOMATIC            SOURCE:         TIMER_WAIT: 170837979344000       ACCESS_MODE: READ WRITE   ISOLATION_LEVEL: REPEATABLE READ        AUTOCOMMIT: NO  NESTING_EVENT_ID: 27NESTING_EVENT_TYPE: STATEMENT1 row in set (0.00 sec)

查看事务事件历史记录表:events_transactions_history:

root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_history\G*************************** 1. row ***************************         THREAD_ID: 3957325        EVENT_NAME: transaction             STATE: ROLLED BACK            TRX_ID: NULL              GTID: AUTOMATIC            SOURCE:         TIMER_WAIT: 170837979344000       ACCESS_MODE: READ WRITE   ISOLATION_LEVEL: REPEATABLE READ        AUTOCOMMIT: NO  NESTING_EVENT_ID: 27NESTING_EVENT_TYPE: STATEMENT2 rows in set (0.00 sec)
root@localhost [test001]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from performance_schema.events_transactions_history_long where STATE='ROLLED BACK'\G*************************** 1. row ***************************         THREAD_ID: 3957325        EVENT_NAME: transaction             STATE: ROLLED BACK            TRX_ID: NULL              GTID: AUTOMATIC            SOURCE:         TIMER_WAIT: 170837979344000       ACCESS_MODE: READ WRITE   ISOLATION_LEVEL: REPEATABLE READ        AUTOCOMMIT: NO  NESTING_EVENT_ID: 27NESTING_EVENT_TYPE: STATEMENT1 row in set (0.00 sec)

++++++++++++++++++++++++++++=+++++++++++++++++++++++++
在会话2上模拟正常提交事务:
开始事务

root@localhost [test001]>begin;Query OK, 0 rows affected (0.00 sec)root@localhost [test001]>update test1_event set username='fox' where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0

会话1上查看事务信息:

root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current\G*************************** 1. row ***************************         THREAD_ID: 3957325        EVENT_NAME: transaction             STATE: ACTIVE            TRX_ID: NULL              GTID: AUTOMATIC            SOURCE:         TIMER_WAIT: 18063808685000       ACCESS_MODE: READ WRITE   ISOLATION_LEVEL: REPEATABLE READ        AUTOCOMMIT: NO  NESTING_EVENT_ID: 75NESTING_EVENT_TYPE: STATEMENT1 row in set (0.00 sec)

在会话2上正常提交事务

root@localhost [test001]>commit;
Query OK, 0 rows affected (0.00 sec)

会话1上查看事务信息:

root@localhost [performance_schema]>root@localhost [performance_schema]>select THREAD_ID,EVENT_NAME,STATE,TRX_ID,GTID,SOURCE,TIMER_WAIT,ACCESS_MODE,ISOLATION_LEVEL,AUTOCOMMIT,NESTING_EVENT_ID,NESTING_EVENT_TYPE from events_transactions_current\G*************************** 1. row ***************************         THREAD_ID: 3957325        EVENT_NAME: transaction             STATE: COMMITTED                                           ##事务已经提交成功            TRX_ID: NULL              GTID: 64a062d1-2e92-11ea-847e-801844ed7bbc:2584551         ##事务正常提交后要记录Gtid的            SOURCE:         TIMER_WAIT: 28245631402000       ACCESS_MODE: READ WRITE   ISOLATION_LEVEL: REPEATABLE READ        AUTOCOMMIT: NO  NESTING_EVENT_ID: 75NESTING_EVENT_TYPE: STATEMENT1 row in set (0.00 sec)

提示:如果一个事务长时间未提交(长时间处于ACTIVE状态)对于这情况,俺们可以查看表nformation_schema.innodb_trx 表直观的看到事务是什么时候开始的,
以及产生这个事务的mysql的线程id号trx_mysql_thread_id: 3957292(也就是会话2的线程id号)

root@localhost [performance_schema]>select * from information_schema.innodb_trx \G*************************** 1. row ***************************                    trx_id: 2594744                 trx_state: RUNNING               trx_started: 2020-02-13 17:53:23     trx_requested_lock_id: NULL          trx_wait_started: NULL                trx_weight: 3       trx_mysql_thread_id: 3957292

performance_schema相关表意思具体可参考下面资料:
配置详解 | performance_schema全方位介绍(二)
http://www.sohu.com/a/253338003_610509
应用示例荟萃 | performance_schema全方位介绍
https://blog.csdn.net/woqutechteam/article/details/81114520

事务 信息 参数 查询 事件 消费 全方位 再次 情况 日志 时候 消费者 线程 结果 记录表 过程 长时 提示 配置 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 互联网科技的 麻工互联网科技 互联网金融公司科技 互联网科技集团 奇酷互联网络科技 融势互联网科技 互联网科技类展会 镁科技互联网资讯平台 深圳卡尔迅互联网科技有限公司怎么样 安控科技rtu产品工业互联网 互联网金融中的现代科技 青岛科技大学互联网大赛研究生 洛阳昕诺飞互联网科技有限公司 互联网科技的全部知识 朱啸虎曾投资哪些互联网科技企业 用友工业互联网科技发展 上海创道互联网络科技有限公司 全球科技与互联网公司市值变化 唯美互联网科技 上海喔噻互联网科技有限公司 金融科技创新监管互联网金融 平安科技 互联网 山东吉时兔互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 崇明区互联网教育科技售后服务 互联网媒体平台算高科技产业 众安科技工业互联网合作 保山互联网科技靠谱吗 上海旺乐尼互联网科技有限公司
0