• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 从INFORMATION_SCHEMA.FILES检索InnoDB表空间元数据

    INFORMATION_SCHEMA.FILES表提供有关所有InnoDB表空间类型的元数据,包括每表文件表空间,常规表空间,系统表空间,临时表表空间和撤消表空间(如果有)。

    本节提供InnoDB特定于用法的示例。有关该INFORMATION_SCHEMA.FILES表提供的数据的更多信息,请参见“ INFORMATION_SCHEMA FILES表”。

    注意

    所述INNODB_TABLESPACESINNODB_DATAFILES表还提供有关的元数据InnoDB的表空间,但数据被限制在文件单次表,一般情况下,和撤消表空间。

    该查询InnoDB从与INFORMATION_SCHEMA.FILESInnoDB空间相关的表字段中检索有关系统表空间的元数据。INFORMATION_SCHEMA.FILESInnoDB始终不相关的字段始终返回NULL,并从查询中排除。

    mysql> 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 WHERE TABLESPACE_NAME LIKE 'innodb_system' \G
    *************************** 1. row 	***************************
            FILE_ID	: 0
          FILE_NAME	: ./ibdata1
          FILE_TYPE	: TABLESPACE
    TABLESPACE_NAME	: innodb_system
       FREE_EXTENTS	: 0
      TOTAL_EXTENTS	: 12
        EXTENT_SIZE	: 1048576
       INITIAL_SIZE	: 12582912
       MAXIMUM_SIZE	: NULL
    AUTOEXTEND_SIZE	: 67108864
          DATA_FREE	: 4194304
             ENGINE	: NORMAL
    

    此查询检索每表文件和常规表空间的FILE_ID(等效于空间ID)和FILE_NAME(包括路径信息)InnoDB。每表文件和常规表空间都有.ibd文件扩展名。

    mysql> SELECT FILE_ID, FILE_NAME FROM INFORMATION_SCHEMA.FILES
           WHERE FILE_NAME LIKE '%.ibd%' ORDER BY FILE_ID;
        +---------+---------------------------------------+
        | FILE_ID | FILE_NAME                             |
        +---------+---------------------------------------+
        |       2 | ./mysql/plugin.ibd                    |
        |       3 | ./mysql/servers.ibd                   |
        |       4 | ./mysql/help_topic.ibd                |
        |       5 | ./mysql/help_category.ibd             |
        |       6 | ./mysql/help_relation.ibd             |
        |       7 | ./mysql/help_keyword.ibd              |
        |       8 | ./mysql/time_zone_name.ibd            |
        |       9 | ./mysql/time_zone.ibd                 |
        |      10 | ./mysql/time_zone_transition.ibd      |
        |      11 | ./mysql/time_zone_transition_type.ibd |
        |      12 | ./mysql/time_zone_leap_second.ibd     |
        |      13 | ./mysql/innodb_table_stats.ibd        |
        |      14 | ./mysql/innodb_index_stats.ibd        |
        |      15 | ./mysql/slave_relay_log_info.ibd      |
        |      16 | ./mysql/slave_master_info.ibd         |
        |      17 | ./mysql/slave_worker_info.ibd         |
        |      18 | ./mysql/gtid_executed.ibd             |
        |      19 | ./mysql/server_cost.ibd               |
        |      20 | ./mysql/engine_cost.ibd               |
        |      21 | ./sys/sys_config.ibd                  |
        |      23 | ./test/t1.ibd                         |
        |      26 | /home/user/test/test/t2.ibd           |
        +---------+---------------------------------------+
    

    该查询检索FILE_IDFILE_NAMEInnoDB全局临时表空间。全局临时表空间文件名以前缀ibtmp

    mysql> SELECT FILE_ID, FILE_NAME FROM INFORMATION_SCHEMA.FILES
           WHERE FILE_NAME LIKE '%ibtmp%';
    +---------	+-----------	+
    | FILE_ID 	| FILE_NAME 	|
    +---------	+-----------	+
    |      22 	| ./ibtmp1  	|
    +---------	+-----------	+
    

    同样,InnoDB撤消表空间文件名以开头undo。以下查询返回FILE_IDFILE_NAME用于InnoDB撤消表空间。

    mysql> SELECT FILE_ID, FILE_NAME FROM INFORMATION_SCHEMA.FILES
           WHERE FILE_NAME LIKE '%undo%';