mysql 查询正在执行的事务
时间: 2023-07-09 16:06:16 浏览: 51
可以使用以下命令查询当前正在执行的事务:
```
SHOW ENGINE INNODB STATUS;
```
执行该命令后,会输出一些关于 InnoDB 存储引擎的状态信息,其中包含了当前正在执行的事务信息。在输出中搜索 "TRANSACTIONS" 关键字,可以看到当前与数据库相关的事务列表,包括事务的 ID、状态、锁信息等。
另外,也可以使用以下命令查看所有正在执行的 MySQL 进程,包括执行的 SQL 语句和相应的线程 ID:
```
SHOW FULL PROCESSLIST;
```
该命令会输出所有连接到 MySQL 服务器的客户端进程信息,可以根据相关信息判断是否存在正在执行的事务。
相关问题
mysql查看正在执行的事务
可以使用以下命令来查看正在执行的事务:
```
SHOW ENGINE INNODB STATUS\G
```
执行该命令后,会输出一些 InnoDB 存储引擎的状态信息,其中包含了当前正在执行的事务的相关信息。在输出中找到 "TRANSACTIONS" 字段即可,它会列出当前正在执行的所有事务相关的信息,包括事务 ID、事务状态、锁定状态、等待锁的事务 ID 等。
查询MySQL 长事务
可以使用以下 SQL 语句查询 MySQL 中的长事务:
```
SELECT
trx.trx_id AS '事务ID',
trx.trx_started AS '开始时间',
TIME_TO_SEC(TIMEDIFF(NOW(), trx.trx_started)) AS '持续时间(秒)',
trx.trx_mysql_thread_id AS '线程ID',
trx.trx_query AS '查询语句'
FROM
information_schema.INNODB_TRX AS trx
WHERE
TIME_TO_SEC(TIMEDIFF(NOW(), trx.trx_started)) > @@long_query_time
ORDER BY
TIME_TO_SEC(TIMEDIFF(NOW(), trx.trx_started)) DESC;
```
其中,`@@long_query_time` 是 MySQL 的系统变量,表示查询执行时间的阈值,默认为 10 秒。如果事务的持续时间超过了该阈值,就会被认为是长事务。如果需要修改该值,可以使用以下 SQL 语句:
```
SET @@long_query_time = 20;
```
将 `20` 替换为自己需要的阈值即可。