INNODB_SYS_TABLESPACES
テーブルは、InnoDB
データディクショナリの SYS_TABLESPACES
テーブル内の情報と同等の、InnoDB
テーブルスペースに関するメタデータを提供します。
関連する使用法と使用例については、セクション14.14.3「InnoDB INFORMATION_SCHEMA システムテーブル」を参照してください。
表 21.16 INNODB_SYS_TABLESPACES のカラム
カラム名 | 説明 |
---|---|
SPACE |
テーブルスペースのスペース ID。 |
NAME |
データベースおよびテーブル名 (たとえば world_innodb\city ) |
FLAG |
この値は、テーブルスペースの形式とストレージ特性に関するビットレベルの情報を提供します。 |
FILE_FORMAT |
テーブルスペースファイル形式 (たとえば Antelope や Barracuda)。このフィールドのデータは、.ibd ファイル内に存在するテーブルスペースフラグ情報から解釈されます。InnoDB ファイル形式の詳細は、セクション14.8「InnoDB のファイル形式管理」を参照してください。 |
ROW_FORMAT |
テーブルスペースの行フォーマット (Compact または Redundant、Dynamic、Compressed)。このフィールドのデータは、.ibd ファイル内に存在するテーブルスペースフラグ情報から解釈されます。 |
PAGE_SIZE |
テーブルスペースのページサイズ。このフィールドのデータは、.ibd ファイル内に存在するテーブルスペースフラグ情報から解釈されます。 |
ZIP_PAGE_SIZE |
テーブルスペースの Zip ページサイズ。このフィールドのデータは、.ibd ファイル内に存在するテーブルスペースフラグ情報から解釈されます。 |
例:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 57 \G
*************************** 1. row ***************************
SPACE: 57
NAME: test/t1
FLAG: 0
FILE_FORMAT: Antelope
ROW_FORMAT: Compact or Redundant
PAGE_SIZE: 16384
ZIP_PAGE_SIZE: 0
1 row in set (0.00 sec)
注:
DESCRIBE
またはSHOW COLUMNS
を使用して、データ型とデフォルト値を含む、このテーブルのカラムに関する追加情報を表示します。このテーブルをクエリーするには
PROCESS
権限が必要です。すべての Antelope ファイル形式のテーブルスペースフラグは (テーブルフラグとは異なり) 常にゼロなので、テーブルスペースの行フォーマットが Redundant または Compact であるかをこのフラグ整数から判断することはできません。この結果、
ROW_FORMAT
フィールドに指定可能な値は、「Compact または Redundant」、「Compressed」、「Dynamic」 になります。
INNODB_SYS_TABLESPACES.FLAG カラム値の解釈:
INNODB_SYS_TABLESPACES.FLAG
カラムは、テーブルスペースの形式およびストレージ特性に関するビットレベルの情報を提供します。
MySQL 5.6 までは、テーブルフラグとテーブルスペースフラグはビット位置 0 の設定を除き同じでした。MySQL 5.6 では、論理ページサイズを保持するために追加の 4 ビットを必要とする、4K および 8K ページのサポートが追加されました。MySQL 5.6 ではまた、CREATE TABLE
および ALTER TABLE
DATA DIRECTORY
句のサポートが追加され、MySQL データディレクトリ外の場所に file-per-table テーブルスペースを格納できるようになりました。この機能には、テーブルフラグとテーブルスペースフラグの両方に追加ビットが必要でしたが、位置は同じではありません。
次の表に示された該当する 10 進数値を一緒に付加すると、テーブルスペース FLAG
カラム値を解釈できます。
表 21.17 INNODB_SYS_TABLESPACES FLAG カラムデータを解釈するためのビット位置値
ビット位置 | 説明 | 10 進数値 |
---|---|---|
0 | テーブルスペース内のテーブルの行フォーマットが DYNAMIC または COMPRESSED の場合、このビットが設定されます。この情報を使用して、Antelope ファイル形式と Barracuda ファイル形式を区別できますが、REDUNDANT ファイル形式と COMPACT ファイル形式は区別できません (DYNAMIC 行フォーマットと COMPRESSED 行フォーマットには Barracuda ファイル形式が必要です)。file-per-table テーブルスペースである場合、INNODB_SYS_TABLES をクエリーして、2 つの Antelope 行フォーマット (REDUNDANT または COMPACT ) のどちらが使用されているかを判断する必要があります。 |
|
1-4 | これらの 4 つのビットには、テーブルスペースの圧縮されたページサイズ (KEY_BLOCK_SIZE または「物理的なブロックサイズ」) を表す小さな数字が含まれます。 |
|
5 | テーブルの行フォーマットが DYNAMIC または COMPRESSED である場合に、file-per-table テーブルスペースにこのビットが設定されます。 |
|
6-9 | これらの 4 つのビットには、テーブルスペースの圧縮解除されたページサイズ (論理ページサイズ) を表す小さな数字が含まれます。論理ページサイズが 16K の元の InnoDB デフォルトページサイズである場合、この設定はゼロです。 |
|
10 |
CREATE TABLE または ALTER TABLE で DATA DIRECTORY オプションが使用された場合、このビットが設定されます。デフォルトのデータディレクトリ (datadir ) 以外のディレクトリに置かれた file-per-table テーブルスペースに、このビットが設定されます。これらのテーブルについては、 ファイルは ファイルと同じ場所に存在します。 ファイルには、 file-per-table テーブルスペースファイルへの実際のディレクトリパスが格納されます。 |
|
次の例では、テーブル t1
は innodb_file_per_table=ON
で作成されます。これはテーブル t1
を独自のテーブルスペース内に作成します。INNODB_SYS_TABLESPACES
をクエリーすると、テーブルスペースの FLAG
値が 33 であることがわかります。どのようにこの値になるかを判断するには、前述の表に記されているビット値を参照してください。テーブル t1
で DYNAMIC
行フォーマットを使用するので、ビット 0 は 1 の値になります。テーブルスペースが DYNAMIC
行フォーマットを使用する file-per-table テーブルスペースなので、ビット 5 は 32 の値になります。innodb_page_size
はデフォルトの 16K 値に設定されているので、ビット位置 6-9 は 0 です。ほかのビット値は適用できないため 0 に設定されます。ビット位置 0 とビット位置 5 の値は合計して 33 の FLAG
値になります。
mysql> use test;
Database changed
mysql> SHOW VARIABLES LIKE 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'innodb_page_size';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)
mysql> SET GLOBAL innodb_file_format=Barracuda;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE t1 (c1 int) ROW_FORMAT=DYNAMIC;
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME LIKE 'test/t1' \G
*************************** 1. row ***************************
SPACE: 75
NAME: test/t1
FLAG: 33
FILE_FORMAT: Barracuda
ROW_FORMAT: Dynamic
PAGE_SIZE: 16384
ZIP_PAGE_SIZE: 0
1 row in set (0.00 sec)