问题描述
我该如何查看RDS for MySQL 当前运行的事务?
解决方案
MySQL 提供了丰富的命令与日志帮助您查看MySQL当前运行的事务,这有助于帮助您分析服务器负载,进行问题排查。
MySQL日志
- 打开MySQL 慢日志来分析那些不符合预期的SQL语句。
- MySQL 一般日志(general log)会记录有所的语句,不论语句是否会执行成功或是否有语法错误,但是一般日志通常会迅速占用大量的存储空间,特别是在繁忙的业场景下。因此建议您在使用时密切关注存储空间的占用情况。
MySQL 命令
下面是一些常用的命令,来查看当前运行事务:
show full processlist
show full processlist[1] 显示了服务器当前正在运行的SQL 语句,对问题排查很有帮助
mysql> show full processlist\G;
*************************** 1. row ***************************
Id: 6213 # connection id
User: repl # 连接用户
Host: 172.22.175.136:44020
db: NULL #所连接到的数据库
Command: Binlog Dump GTID
Time: 1623901 # 处于此状态的时间(s)
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL # 当前执行的命令
```
`
**注**:如果不使用full字段,您只能查看Info字段的前100个字符
**注**:您需要拥有PROCESS 权限才能查看 MySQL 数据库实例上运行的所有线程。如果没有管理员权限,SHOW PROCESSLIST 只会显示与您正在使用的 MySQL 用户关联的线程。
### show engine innodb status\G
show engine innodb status [2] 的输出包含了innodb内部大量的状态信息,例如
1. 信号量等待
2. 外键和死锁信息
3. 事务锁等待信息等等
````undefined
mysql> show engine innodb status\G;
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
2021-12-07 13:50:57 0x7f263fcfe700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 6 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 1621372 srv_active, 0 srv_shutdown, 9384 srv_idle
srv_master_thread log flush and writes: 1630756
……
……
……
```
`
### 查询那些事务处于等待状态
````undefined
SELECT
r.trx_id AS waiting_trx_id,
r.trx_mysql_thread_id AS waiting_thread,
r.trx_query AS waiting_query,
b.trx_id AS blocking_trx_id,
b.trx_mysql_thread_id AS blocking_thread,
b.trx_query AS blocking_query
FROM
information_schema.innodb_lock_waits AS w
INNER JOIN information_schema.innodb_trx AS b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx AS r ON r.trx_id = w.requesting_trx_id;
```
`
# 参考文档
[1] [https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html](https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html)
[2] [https://dev.mysql.com/doc/refman/5.7/en/show-engine.html](https://dev.mysql.com/doc/refman/5.7/en/show-engine.html)
**如果您有其他问题,欢迎您联系火山引擎**[技术支持服务](https://console.volcengine.com/ticket/createTicketV2/)