MySQL 8.4 Release Notes
17.15.7 InnoDB INFORMATION_SCHEMA 临时表信息表
INNODB_TEMP_TABLE_INFO
提供了关于用户创建的 InnoDB
临时表在 InnoDB
实例中的信息。它不提供关于优化器使用的内部 InnoDB
临时表的信息。
mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_TEMP%';
+---------------------------------------------+
| Tables_in_INFORMATION_SCHEMA (INNODB_TEMP%) |
+---------------------------------------------+
| INNODB_TEMP_TABLE_INFO |
+---------------------------------------------+
查看表定义,请参见第28.4.27节,“The INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO Table”。
示例17.12 INNODB_TEMP_TABLE_INFO
这个示例演示了INNODB_TEMP_TABLE_INFO
表的特征。
-
创建一个简单的
InnoDB
临时表:mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
-
查询
INNODB_TEMP_TABLE_INFO
以查看临时表元数据。mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 194 NAME: #sql7a79_1_0 N_COLS: 4 SPACE: 182
临时表的唯一标识符是
TABLE_ID
。NAME 列显示系统生成的临时表名称,前缀为“#sql”。由于 InnoDB 总是创建三个隐藏表列(DB_ROW_ID
、DB_TRX_ID
和DB_ROLL_PTR
),因此列数 (N_COLS
) 为 4,而不是 1。 -
重启 MySQL,然后查询
INNODB_TEMP_TABLE_INFO
。mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
返回空集,因为
INNODB_TEMP_TABLE_INFO
和其数据在服务器关闭时不被持久化到磁盘。 -
创建一个新的临时表。
mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
-
查询
INNODB_TEMP_TABLE_INFO
以查看临时表元数据。mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 196 NAME: #sql7b0e_1_0 N_COLS: 4 SPACE: 184
由于空间 ID 是在服务器启动时动态生成的,因此可能不同。