information_schema.innodb_trx
时间: 2023-04-21 07:05:07 浏览: 197
information_schema.innodb_trx是MySQL数据库中的一个系统表,用于存储当前正在运行的InnoDB事务的信息。它包含了事务的ID、开始时间、锁定的资源、等待的资源等信息,可以帮助用户了解当前数据库的事务状态,以及排查可能出现的事务冲突等问题。
相关问题
select * from information_schema.INNODB_TRX结果解析
`information_schema.INNODB_TRX`是一个系统视图,用于查看当前正在运行中的事务信息。当您执行`select * from information_schema.INNODB_TRX`时,将返回以下列信息:
- `trx_id`:事务ID,每个事务都有一个唯一的ID。
- `trx_state`:事务状态,包括RUNNING(运行中)、LOCK WAIT(等待锁)、ROLLING BACK(回滚中)、COMMITTING(提交中)等。
- `trx_started`:事务开始时间。
- `trx_requested_lock_id`:事务请求的锁ID。
- `trx_wait_started`:事务等待开始时间。
- `trx_weight`:事务的权重,用于计算事务等待锁的优先级。
- `trx_mysql_thread_id`:事务所在的MySQL线程ID。
- `trx_query`:事务执行的SQL语句。
- `trx_operation_state`:事务操作状态。
- `trx_tables_in_use`:事务使用的表数量。
- `trx_tables_locked`:事务锁定的表数量。
- `trx_lock_structs`:事务使用的锁结构数量。
- `trx_lock_memory_bytes`:事务使用的锁内存大小。
- `trx_rows_locked`:事务锁定的行数。
通过查看`information_schema.INNODB_TRX`视图,您可以了解当前系统中正在运行的事务情况,从而进行问题排查和性能优化。
select * from information_schema.INNODB_TRX; 的trx_started早8h
如果使用 `select * from information_schema.INNODB_TRX;` 命令查询到的 `trx_started` 显示的时间比当前时间早 8 个小时,那么很有可能是因为 MySQL 的时区设置问题导致的。可以按照以下步骤进行解决:
1. 查看当前 MySQL 数据库系统的时区设置:
```
SELECT @@global.time_zone, @@session.time_zone;
```
如果时区设置为 UTC,则会显示:
```
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| UTC | UTC |
+--------------------+---------------------+
```
2. 修改 MySQL 数据库系统的时区设置:
- 可以使用以下命令修改 MySQL 数据库的时区设置为东八区(北京时间):
```
SET GLOBAL time_zone = 'Asia/Shanghai';
SET @@session.time_zone = 'Asia/Shanghai';
```
或者,也可以在 MySQL 配置文件 `/etc/my.cnf` 中添加以下配置项:
```
[mysqld]
default-time-zone = 'Asia/Shanghai'
```
添加后需要重启 MySQL 服务使其生效。
- 如果你使用的是 MySQL 8.0 版本或以上,还可以使用以下命令将时区设置为系统时区:
```
SET GLOBAL time_zone = SYSTEM;
SET @@session.time_zone = SYSTEM;
```
这样 MySQL 数据库的时区设置就会与操作系统的时区设置保持一致。
3. 重新启动 MySQL 服务:
```
sudo systemctl restart mysqld
```
执行以上步骤后,再次使用 `select * from information_schema.INNODB_TRX;` 命令查询,应该就能看到正确的时间了。