表InnoDB
监视器已弃用,可能会在未来的版本中删除。类似的信息可以从InnoDB
INFORMATION_SCHEMA
表格中获得。请参阅
第 21.4 节,“INFORMATION_SCHEMA InnoDB 表”。
表InnoDB
监视器打印InnoDB
内部数据字典的内容。
输出包含每个表的一个部分。SYS_FOREIGN
和
SYS_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
适用于该表的定义。无论该表是引用表还是被引用表,都会显示此信息。