Skip to content

INNODB_SYS_TABLES

xiaoboluo768 edited this page Jun 7, 2020 · 2 revisions
  • 该表提供查询有关InnoDB表的元数据,等同于InnoDB数据字典中SYS_TABLES表的信息
  • 该表为memory引擎临时表,查询该表的用户需要有process权限
  • 表定义语句
CREATE TEMPORARY TABLE `INNODB_SYS_TABLES` (
  `TABLE_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
  `NAME` varchar(655) NOT NULL DEFAULT '',
  `FLAG` int(11) NOT NULL DEFAULT '0',
  `N_COLS` int(11) NOT NULL DEFAULT '0',
  `SPACE` int(11) NOT NULL DEFAULT '0',
  `FILE_FORMAT` varchar(10) DEFAULT NULL,
  `ROW_FORMAT` varchar(12) DEFAULT NULL,
  `ZIP_PAGE_SIZE` int(11) unsigned NOT NULL DEFAULT '0',
  `SPACE_TYPE` varchar(10) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8
  • 表字段含义
  • TABLE_ID:Innodb表ID,在整个实例中唯一
  • NAME:表名称。该字符串包含db_name+tb_name,例如"test/t1",该字符串值可能受lower_case_table_names系统参数设置的影响
  • FLAG:有关表格式和存储特性的位级信息数据,包括行格式,压缩页大小(如果适用)以及DATA DIRECTORY子句是否与CREATE TABLE或ALTER TABLE一起使用等
  • N_COLS:表中的列数量。该字段值包含了Innodb表的三个隐藏列(DB_ROW_ID、DB_TRX_ID、DB_ROLL_PTR),另外,如果存在虚拟生成列,则该字段值还包含虚拟生成列
  • SPACE:表所在表空间ID。0表示InnoDB系统表空间。任何其他非0数字独立表空间或普通表空间。该ID值在执行过TRUNCATE TABLE语句后保持不变。对于每个表的表空间ID记录,在此表中的ID值是唯一的
  • FILE_FORMAT:表空间文件的存储格式(有效值为:Antelope、Barracuda)
  • ROW_FORMAT:表的数据行存储格式(有效值为:Compact,、Redundant,、Dynamic、Compressed)
  • ZIP_PAGE_SIZE:压缩页大小。仅适用于使用压缩行格式的表
  • SPACE_TYPE:表所属的表空间类型。可能的值包括:System(系统表空间)、General(普通表空间)、Single(独立表空间)、使用CREATE TABLE或ALTER TABLE 语句时使用TABLESPACE建表选项指定表空间名称,例如:TABLESPACE = innodb_system,表示分配该表到系统表空间,如果需要指定到一个普通表空间(针对NDB存储引擎适用),详情参考链接:https://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html
  • 表记录内容示例
root@localhost : (none) 12:53:44> select * from information_schema.INNODB_SYS_TABLES where NAME like 'sbtest%';
+----------+-------------------+------+--------+-------+-------------+------------+---------------+------------+
| TABLE_ID | NAME              | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE | SPACE_TYPE |
+----------+-------------------+------+--------+-------+-------------+------------+---------------+------------+
|      323 | sbtest/sbtest1    |  33 |      7 |  151 | Barracuda  | Dynamic    |            0 | Single    |
|      318 | sbtest/sbtest2    |  33 |      7 |  146 | Barracuda  | Dynamic    |            0 | Single    |
|      320 | sbtest/sbtest3    |  33 |      7 |  148 | Barracuda  | Dynamic    |            0 | Single    |
|      321 | sbtest/sbtest4    |  33 |      7 |  149 | Barracuda  | Dynamic    |            0 | Single    |
|      325 | sbtest/sbtest5    |  33 |      7 |  153 | Barracuda  | Dynamic    |            0 | Single    |
|      322 | sbtest/sbtest6    |  33 |      7 |  150 | Barracuda  | Dynamic    |            0 | Single    |
|      324 | sbtest/sbtest7    |  33 |      7 |  152 | Barracuda  | Dynamic    |            0 | Single    |
|      319 | sbtest/sbtest8    |  33 |      7 |  147 | Barracuda  | Dynamic    |            0 | Single    |
|      347 | sbtest/test_table |  33 |      4 |  295 | Barracuda  | Dynamic    |            0 | Single    |
+----------+-------------------+------+--------+-------+-------------+------------+---------------+------------+
9 rows in set (0.00 sec)
  • PS:flag列bit位值解释
  • 详见链接:https://dev.mysql.com/doc/refman/5.7/en/innodb-sys-tables-table.html
  • 链接中的表格查看方法:例如flag列值为33,则在"Decimal Numeric Value" 列表示的十进制数字中,找到存在32与1的值的行,即第一行 和第三行,然后,从这两行的"Description"列的解释我们可以得出,该表的行存储格式要么为Dynamic要么为Compressed,而从ZIP_PAGE_SIZE 列值我们可以看到该表是否有使用压缩格式,从而可以进一步确定该表到底使用的何种行存储格式(当然,这个值对于一般使用者并无多大用处,了解即可)

上一篇:INNODB_SYS_INDEXES表 |下一篇:INNODB_SYS_FIELDS表

Clone this wiki locally