Skip to content
xiaoboluo768 edited this page Jun 7, 2020 · 2 revisions
  • 该表提供查询MySQL的数据表空间文件相关的信息,包含InnoDB存储引擎和NDB存储引擎相关的数据文件信息,由于NDB存储引擎在国内较少使用,我们大多数场景(95%以上场景InnoDB存储引擎都满可以使用)都是使用InnoDB存储引擎,以下我们只针对InnoDB存储引擎做介绍
  • 该表是Memory存储引擎表
  • 表定义语句
CREATE TEMPORARY TABLE `FILES` (
  `FILE_ID` bigint(4) NOT NULL DEFAULT '0',
  `FILE_NAME` varchar(4000) DEFAULT NULL,
  `FILE_TYPE` varchar(20) NOT NULL DEFAULT '',
  `TABLESPACE_NAME` varchar(64) DEFAULT NULL,
  `TABLE_CATALOG` varchar(64) NOT NULL DEFAULT '',
  `TABLE_SCHEMA` varchar(64) DEFAULT NULL,
  `TABLE_NAME` varchar(64) DEFAULT NULL,
  `LOGFILE_GROUP_NAME` varchar(64) DEFAULT NULL,
  `LOGFILE_GROUP_NUMBER` bigint(4) DEFAULT NULL,
  `ENGINE` varchar(64) NOT NULL DEFAULT '',
  `FULLTEXT_KEYS` varchar(64) DEFAULT NULL,
  `DELETED_ROWS` bigint(4) DEFAULT NULL,
  `UPDATE_COUNT` bigint(4) DEFAULT NULL,
  `FREE_EXTENTS` bigint(4) DEFAULT NULL,
  `TOTAL_EXTENTS` bigint(4) DEFAULT NULL,
  `EXTENT_SIZE` bigint(4) NOT NULL DEFAULT '0',
  `INITIAL_SIZE` bigint(21) unsigned DEFAULT NULL,
  `MAXIMUM_SIZE` bigint(21) unsigned DEFAULT NULL,
  `AUTOEXTEND_SIZE` bigint(21) unsigned DEFAULT NULL,
  `CREATION_TIME` datetime DEFAULT NULL,
  `LAST_UPDATE_TIME` datetime DEFAULT NULL,
  `LAST_ACCESS_TIME` datetime DEFAULT NULL,
  `RECOVER_TIME` bigint(4) DEFAULT NULL,
  `TRANSACTION_COUNTER` bigint(4) DEFAULT NULL,
  `VERSION` bigint(21) unsigned DEFAULT NULL,
  `ROW_FORMAT` varchar(10) DEFAULT NULL,
  `TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
  `AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
  `DATA_FREE` bigint(21) unsigned DEFAULT NULL,
  `CREATE_TIME` datetime DEFAULT NULL,
  `UPDATE_TIME` datetime DEFAULT NULL,
  `CHECK_TIME` datetime DEFAULT NULL,
  `CHECKSUM` bigint(21) unsigned DEFAULT NULL,
  `STATUS` varchar(20) NOT NULL DEFAULT '',
  `EXTRA` varchar(255) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8
  • 表字段含义(该表中所有字段都为 "MySQL extension" 列)
  • FILE_ID:表空间ID,也称"space_id"或"fil_space_t::id"
  • FILE_NAME:数据文件(表空间)名称。使用独立表空间和常规表空间的表的数据文件名中都有一个.ibd文件扩展名。undo log的前缀为"undo",系统表空间的前缀是"ibdata",临时表空间的前缀是"ibtmp",这些表空间文件的名称中都包含了文件路径(与MySQL数据目录相关,通常只有undo log为绝对路径,其他表空间文件为相对路径)
  • FILE_TYPE:表空间文件类型。 InnoDB表空间文件有三种可能的文件类型。
* TABLESPACE:表示表相关的系统表空间、常规表空间、独立表空间文件或其他形式的用户数据文件类型 * TEMPORARY:表示临时表空间的文件类型 * UNDO LOG:表示undo log表空间文件类型
  • TABLESPACE_NAME:表空间的SQL名称。常规表空间名称是SYS_TABLESPACES.NAME值。对于其他表空间文件,名称以"innodb_"开头,例如:"innodb_system"、"innodb_undo"和"innodb_file_per_table"。其中,"innodb_file_per_table_##"表示独立表空间名称(##表示表空间ID)
  • ENGINE:存储引擎名称。对于InnoDB存储引擎的文件,该列值总是InnoDB
  • FREE_EXTENTS:表示当前数据文件中空闲的可用区块的数量
  • TOTAL_EXTENTS:表示当前数据文件中总的区块数量。不计算文件末尾的部分
  • EXTENT_SIZE:表示数据文件的区块大小。对于4k,8k或16k页面大小的数据文件,区块是1048576(1MB)。对于32k页面大小的文件,区块大小为2097152字节(2MB),对于64k页面大小的文件,区块大小为4194304(4MB)。 INFORMATION_SCHEMA.FILES不记录InnoDB页面大小。页面大小由系统配置参数innodb_page_size定义。另外,区块大小信息也可以从INNODB_SYS_TABLESPACES中查询,其中FILES.FILE_ID 即为 INNODB_SYS_TABLESPACES.SPACE_ID
  • INITIAL_SIZE:表示数据文件的初始大小,以字节为单位
  • MAXIMUM_SIZE:表示数据文件中允许的最大字节数。除了系统表空间和临时表空间可以使用参数定义一个最大值之外(不设置自动扩展,指定的表空间大小即为该数据文件的最大值。系统表空间文件大小由innodb_data_file_path定义,临时表空间文件大小由innodb_temp_data_file_path定义),所有的数据文件的最大值均为NULL。当数据空间文件的最大值为NULL时,表示不限制表空间文件的文件大小限制
  • AUTOEXTEND_SIZE:表示表空间文件的自动扩展大小,由innodb_data_file_path系统配置参数定义(临时表空间的自动扩展大小由系统配置参数innodb_temp_data_file_path定义)
  • DATA_FREE:表示整个表空间的可用空间总量(以字节为单位)。预定义的系统表空间(包括系统表空间和临时表空间)可能有一个或多个数据文件
  • STATUS:默认为NORMAL。 InnoDB的独立表空间文件的信息可能会被记录为IMPORTING,此时表明表空间文件不可用
  • PS:
  • 以上字段含义解释仅适用于InnoDB引擎的数据文件。下面没有提及到的INFORMATION_SCHEMA.FILES表中的字段不适用于InnoDB存储引擎,且当文件为InnoDB引擎时这些未提及的字段信息显示为NULL值。
  • 该表中的数据是根据缓存在内存中的已打开数据文件来记录的,与查询INFORMATION_SCHEMA.INNODB_SYS_DATAFILES表中的内部数据字典信息不同,INFORMATION_SCHEMA.INNODB_SYS_DATAFILES中的数据是来自InnoDB存储引擎的内部数据字典表SYS_DATAFILES
  • INFORMATION_SCHEMA.FILES表中记录的的数据包含了临时表空间数据信息(undo log独立表空间文件的信息也由INFORMATION_SCHEMA.FILES表记录)。临时表空间文件的数据信息在内部数据字典表SYS_DATAFILES中不可用,因此INNODB_SYS_DATAFILES表不记录。
  • 表记录内容示例
# 表完整行记录数据
admin@localhost : information_schema 05:44:39> select * from FILES limit 1\G;
*************************** 1. row ***************************
            FILE_ID: 0
          FILE_NAME: /home/mysql/data/mysqldata1/innodb_ts/ibdata1
          FILE_TYPE: TABLESPACE
    TABLESPACE_NAME: innodb_system
      TABLE_CATALOG: 
        TABLE_SCHEMA: NULL
          TABLE_NAME: NULL
  LOGFILE_GROUP_NAME: NULL
LOGFILE_GROUP_NUMBER: NULL
              ENGINE: InnoDB
      FULLTEXT_KEYS: NULL
        DELETED_ROWS: NULL
        UPDATE_COUNT: NULL
        FREE_EXTENTS: 3
      TOTAL_EXTENTS: 2048
        EXTENT_SIZE: 1048576
        INITIAL_SIZE: 2147483648
        MAXIMUM_SIZE: NULL
    AUTOEXTEND_SIZE: 67108864
      CREATION_TIME: NULL
    LAST_UPDATE_TIME: NULL
    LAST_ACCESS_TIME: NULL
        RECOVER_TIME: NULL
TRANSACTION_COUNTER: NULL
            VERSION: NULL
          ROW_FORMAT: NULL
          TABLE_ROWS: NULL
      AVG_ROW_LENGTH: NULL
        DATA_LENGTH: NULL
    MAX_DATA_LENGTH: NULL
        INDEX_LENGTH: NULL
          DATA_FREE: 2105540608
        CREATE_TIME: NULL
        UPDATE_TIME: NULL
          CHECK_TIME: NULL
            CHECKSUM: NULL
              STATUS: NORMAL
              EXTRA: NULL
1 row in set (0.00 sec)

# 该表字段较多,通常,我们可能只需要查询一部分字段即可,类似如下:
root@localhost : information_schema 12:22:27> SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS ENGINE FROM INFORMATION_SCHEMA.FILES \G
  • 注意:该表中的数据没有对应的show语句查询方式

上一篇:EVENTS表 |下一篇:GLOBAL_STATUS、GLOBAL_VARIABLES、SESSION_STATUS、SESSION_VARIABLES表

Clone this wiki locally