InnoDB
テーブルモニターは非推奨であり、将来のリリースで削除される可能性があります。同様の情報は、InnoDB
INFORMATION_SCHEMA
テーブルから取得できます。セクション21.29「InnoDB の INFORMATION_SCHEMA テーブル」を参照してください。
InnoDB
テーブルモニターは、InnoDB
内部データディクショナリの内容を出力します。
この出力には、テーブルごとに 1 つのセクションが含まれます。SYS_FOREIGN
および SYS_FOREIGN_COLS
セクションは、外部キーに関する情報を保持する内部データディクショナリテーブルのためのものです。また、テーブルモニターのテーブルや、ユーザーが作成した各 InnoDB
テーブルのためのセクションもあります。test
データベース内に次の 2 つのテーブルが作成されたとします。
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;
この場合、テーブルモニターの出力は次のようになります (形式を少し変更しました)。
===========================================
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
==================================
テーブルモニターの出力には、テーブルごとに、そのテーブルに関する一般的な情報と、そのカラム、インデックス、および外部キーに関する固有の情報を表示するセクションが含まれます。
テーブルごとの一般的な情報には、テーブル名 (内部テーブルを除き、
の形式)、その ID、カラムとインデックスの数、および概略の行数が含まれます。
db_name
/tbl_name
テーブルセクションの COLUMNS
の部分には、テーブル内の各カラムが一覧表示されます。カラムごとの情報には、その名前とデータ型の特性が示されます。InnoDB
によって、DB_ROW_ID
(行 ID)、DB_TRX_ID
(トランザクション ID)、DB_ROLL_PTR
(ロールバック/Undo データへのポインタ) などのいくつかの内部カラムが追加されます。
DATA_
: これらのシンボルはデータ型を示します。特定のカラムについて、複数のxxx
DATA_
シンボルが存在する可能性があります。xxx
prtype
: そのカラムの「正確な」型。このフィールドには、そのカラムのデータ型、文字セットコード、NULL 可能性、符号の有無、それがバイナリ文字列であるかどうかなどの情報が含まれます。このフィールドについては、innobase/include/data0type.h
ソースファイルで説明されています。len
: カラムの長さ (バイト単位)。
テーブルセクションの各 INDEX
の部分は、1 つのテーブルインデックスの名前と特性を提供します。
name
: インデックス名。この名前がPRIMARY
である場合、そのインデックスは主キーです。この名前がGEN_CLUST_INDEX
である場合、そのインデックスは、テーブル定義に主キーやNULL
以外の一意のインデックスが含まれていないときに自動的に作成されるクラスタ化されたインデックスです。セクション14.2.13.2「クラスタインデックスとセカンダリインデックス」を参照してください。id
: インデックス 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
定義が一覧表示されます。この情報は、そのテーブルが、参照するテーブルまたは参照されるテーブルのどちらであっても表示されます。