Documentation Home
MySQL 8.0 参考手册  / 第 15 章 InnoDB 存储引擎  / 15.17 InnoDB 监视器  /  14.17.5 InnoDB 表监视器输出

14.17.5 InnoDB 表监视器输出

笔记

InnoDB监视器已弃用,可能会在未来的版本中删除。类似的信息可以从InnoDB INFORMATION_SCHEMA表格中获得。请参阅 第 21.4 节,“INFORMATION_SCHEMA InnoDB 表”

InnoDB监视器打印InnoDB内部数据字典的内容。

输出包含每个表的一个部分。SYS_FOREIGNSYS_FOREIGN_COLS部分用于维护有关外键信息的内部数据字典表。 还有用于表监视器表和每个用户创建的InnoDB表的部分。假设数据库中已经创建了如下两张表 test

CREATE TABLE parent
(
  par_id    INT NOT NULL,
  fname      CHAR(20),
  lname      CHAR(20),
  PRIMARY KEY (par_id),
  UNIQUE INDEX (lname, fname)
) ENGINE = INNODB;

CREATE TABLE child
(
  par_id      INT NOT NULL,
  child_id    INT NOT NULL,
  name        VARCHAR(40),
  birth       DATE,
  weight      DECIMAL(10,2),
  misc_info   VARCHAR(255),
  last_update TIMESTAMP,
  PRIMARY KEY (par_id, child_id),
  INDEX (name),
  FOREIGN KEY (par_id) REFERENCES parent (par_id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE = INNODB;

然后 Table Monitor 输出看起来像这样(稍微重新格式化):

===========================================
090420 12:09:32 INNODB TABLE MONITOR OUTPUT
===========================================
--------------------------------------
TABLE: name SYS_FOREIGN, id 0 11, columns 7, indexes 3, appr.rows 1
  COLUMNS: ID: DATA_VARCHAR DATA_ENGLISH len 0;
           FOR_NAME: DATA_VARCHAR DATA_ENGLISH len 0;
           REF_NAME: DATA_VARCHAR DATA_ENGLISH len 0;
           N_COLS: DATA_INT len 4;
           DB_ROW_ID: DATA_SYS prtype 256 len 6;
           DB_TRX_ID: DATA_SYS prtype 257 len 6;
  INDEX: name ID_IND, id 0 11, fields 1/6, uniq 1, type 3
   root page 46, appr.key vals 1, leaf pages 1, size pages 1
   FIELDS:  ID DB_TRX_ID DB_ROLL_PTR FOR_NAME REF_NAME N_COLS
  INDEX: name FOR_IND, id 0 12, fields 1/2, uniq 2, type 0
   root page 47, appr.key vals 1, leaf pages 1, size pages 1
   FIELDS:  FOR_NAME ID
  INDEX: name REF_IND, id 0 13, fields 1/2, uniq 2, type 0
   root page 48, appr.key vals 1, leaf pages 1, size pages 1
   FIELDS:  REF_NAME ID
--------------------------------------
TABLE: name SYS_FOREIGN_COLS, id 0 12, columns 7, indexes 1, appr.rows 1
  COLUMNS: ID: DATA_VARCHAR DATA_ENGLISH len 0;
           POS: DATA_INT len 4;
           FOR_COL_NAME: DATA_VARCHAR DATA_ENGLISH len 0;
           REF_COL_NAME: DATA_VARCHAR DATA_ENGLISH len 0;
           DB_ROW_ID: DATA_SYS prtype 256 len 6;
           DB_TRX_ID: DATA_SYS prtype 257 len 6;
  INDEX: name ID_IND, id 0 14, fields 2/6, uniq 2, type 3
   root page 49, appr.key vals 1, leaf pages 1, size pages 1
   FIELDS:  ID POS DB_TRX_ID DB_ROLL_PTR FOR_COL_NAME REF_COL_NAME
--------------------------------------
TABLE: name test/child, id 0 14, columns 10, indexes 2, appr.rows 201
  COLUMNS: par_id: DATA_INT DATA_BINARY_TYPE DATA_NOT_NULL len 4;
           child_id: DATA_INT DATA_BINARY_TYPE DATA_NOT_NULL len 4;
           name: DATA_VARCHAR prtype 524303 len 40;
           birth: DATA_INT DATA_BINARY_TYPE len 3;
           weight: DATA_FIXBINARY DATA_BINARY_TYPE len 5;
           misc_info: DATA_VARCHAR prtype 524303 len 255;
           last_update: DATA_INT DATA_UNSIGNED DATA_BINARY_TYPE DATA_NOT_NULL len 4;
           DB_ROW_ID: DATA_SYS prtype 256 len 6;
           DB_TRX_ID: DATA_SYS prtype 257 len 6;
  INDEX: name PRIMARY, id 0 17, fields 2/9, uniq 2, type 3
   root page 52, appr.key vals 201, leaf pages 5, size pages 6
   FIELDS:  par_id child_id DB_TRX_ID DB_ROLL_PTR name birth weight misc_info last_update
  INDEX: name name, id 0 18, fields 1/3, uniq 3, type 0
   root page 53, appr.key vals 210, leaf pages 1, size pages 1
   FIELDS:  name par_id child_id
  FOREIGN KEY CONSTRAINT test/child_ibfk_1: test/child ( par_id )
             REFERENCES test/parent ( par_id )
--------------------------------------
TABLE: name test/innodb_table_monitor, id 0 15, columns 4, indexes 1, appr.rows 0
  COLUMNS: i: DATA_INT DATA_BINARY_TYPE len 4;
           DB_ROW_ID: DATA_SYS prtype 256 len 6;
           DB_TRX_ID: DATA_SYS prtype 257 len 6;
  INDEX: name GEN_CLUST_INDEX, id 0 19, fields 0/4, uniq 1, type 1
   root page 193, appr.key vals 0, leaf pages 1, size pages 1
   FIELDS:  DB_ROW_ID DB_TRX_ID DB_ROLL_PTR i
--------------------------------------
TABLE: name test/parent, id 0 13, columns 6, indexes 2, appr.rows 299
  COLUMNS: par_id: DATA_INT DATA_BINARY_TYPE DATA_NOT_NULL len 4;
           fname: DATA_CHAR prtype 524542 len 20;
           lname: DATA_CHAR prtype 524542 len 20;
           DB_ROW_ID: DATA_SYS prtype 256 len 6;
           DB_TRX_ID: DATA_SYS prtype 257 len 6;
  INDEX: name PRIMARY, id 0 15, fields 1/5, uniq 1, type 3
   root page 50, appr.key vals 299, leaf pages 2, size pages 3
   FIELDS:  par_id DB_TRX_ID DB_ROLL_PTR fname lname
  INDEX: name lname, id 0 16, fields 2/3, uniq 2, type 2
   root page 51, appr.key vals 300, leaf pages 1, size pages 1
   FIELDS:  lname fname par_id
  FOREIGN KEY CONSTRAINT test/child_ibfk_1: test/child ( par_id )
             REFERENCES test/parent ( par_id )
-----------------------------------
END OF INNODB TABLE MONITOR OUTPUT
==================================

对于每个表,Table Monitor 输出包含一个部分,显示有关该表的一般信息以及有关其列、索引和外键的特定信息。

每个表的一般信息包括表名( 除内部表外的格式)、表 ID、列数和索引数,以及大概的行数。 db_name/tbl_name

表格部分的COLUMNS部分列出了表格中的每一列。每列的信息指示其名称和数据类型特征。一些内部列由添加InnoDB,例如 DB_ROW_ID(行 ID)、 DB_TRX_ID(事务 ID)和 DB_ROLL_PTR(指向回滚/撤消数据的指针)。

  • DATA_xxx

    这些符号表示数据类型。给定列可能有多个 符号。 DATA_xxx

  • prtype

    该列的精确类型。该字段包括列数据类型、字符集代码、可空性、符号性以及是否为二进制字符串等信息。该字段在 innobase/include/data0type.h源文件中有描述。

  • len

    以字节为单位的列长度。

表节的每一INDEX部分都提供了一个表索引的名称和特征:

  • name

    索引名称。如果名称是PRIMARY,则索引是主键。如果名称为 GEN_CLUST_INDEX,则索引是在表定义不包含主键或非NULL 唯一索引时自动创建的聚簇索引。请参阅第 14.6.2.1 节,“聚簇索引和二级索引”

  • id

    索引标识。

  • fields

    索引中的字段数,作为 格式中的值: m/n

    • m是用户定义的列数;也就是说,您将在CREATE TABLE 语句的索引定义中看到的列数。

    • n是索引列的总数,包括内部添加的列。对于聚簇索引,总数包括表定义中的其他列,加上内部添加的任何列。对于二级索引,总数包括主键中不属于二级索引的列。

  • uniq

    足以唯一确定索引值的前导字段数。

  • type

    索引类型。这是一个位域。例如,1 表示聚簇索引,2 表示唯一索引,因此聚簇索引(始终包含唯一值)的 type值为 3。 type值为 0 的索引既不是聚簇索引也不是唯一索引。标志值在 innobase/include/dict0mem.h源文件中定义。

  • root page

    索引根页码。

  • appr. key vals

    近似索引基数。

  • leaf pages

    索引中叶页的近似数量。

  • size pages

    索引中的近似总页数。

  • FIELDS

    索引中字段的名称。对于自动生成的聚簇索引,字段列表以内部DB_ROW_ID(行 ID)字段开头。 DB_TRX_ID并且 DB_ROLL_PTR始终在内部添加到聚簇索引中,跟在构成主键的字段之后。对于二级索引,最终字段是那些来自主键但不属于二级索引的字段。

表部分的末尾列出了FOREIGN KEY适用于该表的定义。无论该表是引用表还是被引用表,都会显示此信息。