FILES
テーブルには、MySQL テーブルスペースデータが格納されているファイルに関する情報が表示されます。
FILES
テーブルには、InnoDB
データファイルに関する情報が表示されます。 NDB Cluster では、このテーブルは「NDB Cluster ディスクデータ」テーブルが格納されているファイルに関する情報も提供します。 InnoDB
に固有の追加情報については、このセクションの後半の InnoDB の注意 を参照してください。NDB Cluster に固有の追加情報については、NDB に関する注意事項 を参照してください。
FILES
テーブルには、次のカラムがあります:
-
FILE_ID
InnoDB
の場合:space_id
またはfil_space_t::id
とも呼ばれるテーブルスペース ID。NDB
の場合: ファイル識別子。FILE_ID
カラムの値は自動生成されます。 -
FILE_NAME
InnoDB
の場合: データファイルの名前。 File-per-table および general テーブルスペースには、.ibd
ファイル名拡張子が付いています。 undo テーブルスペースには、接頭辞としてundo
が付きます。 システムテーブルスペースには、接頭辞としてibdata
が付きます。 グローバル一時テーブルスペースには、接頭辞としてibtmp
が付きます。 ファイル名にはファイルパスが含まれており、これは MySQL データディレクトリ (datadir
システム変数の値) に対して相対的である可能性があります。NDB
の場合:CREATE LOGFILE GROUP
またはALTER LOGFILE GROUP
によって作成された undo ログファイル、あるいはCREATE TABLESPACE
またはALTER TABLESPACE
によって作成されたデータファイルの名前。 NDB 8.0 では、ファイル名は相対パスで表示されます。undo ログファイルの場合、このパスはディレクトリ
を基準とした相対パスで、データファイルの場合はディレクトリDataDir
/ndb_NodeId
_fs/LG
を基準とした相対パスです。 これは、たとえば、DataDir
/ndb_NodeId
_fs/TSALTER TABLESPACE ts ADD DATAFILE 'data_2.dat' INITIAL SIZE 256M
で作成されたデータファイルの名前が./data_2.dat
として表示されることを意味します。 -
FILE_TYPE
InnoDB
の場合: テーブルスペースのファイルタイプ。InnoDB
ファイルには、3 つのファイルタイプがあります。TABLESPACE
は、テーブル、インデックスまたはその他の形式のユーザーデータを保持するシステムテーブルスペースファイル、一般テーブルスペースファイルまたはファイルごとのテーブルスペースファイルのファイルタイプです。TEMPORARY
は、一時テーブルスペースのファイルタイプです。UNDO LOG
は、undo レコードを保持する undo テーブルスペースのファイルタイプです。NDB
の場合:UNDO LOG
またはDATAFILE
のいずれかの値。 NDB 8.0.13 より前では、TABLESPACE
も可能な値でした。 -
TABLESPACE_NAME
ファイルが関連付けられているテーブルスペースの名前。
InnoDB
の場合: 一般的なテーブルスペース名は、作成時に指定したとおりです。 テーブルごとのファイルテーブルスペース名は、次の形式で表示されます:
。schema_name
/table_name
InnoDB
システムのテーブルスペース名はinnodb_system
です。 グローバル一時テーブルスペース名はinnodb_temporary
です。 デフォルトの UNDO テーブルスペース名は、innodb_undo_001
およびinnodb_undo_002
です。 ユーザーが作成した UNDO テーブルスペースの名前は、作成時に指定したとおりです。 -
TABLE_CATALOG
この値は常に空です。
-
TABLE_SCHEMA
これは常に
NULL
です。 -
TABLE_NAME
これは常に
NULL
です。 -
LOGFILE_GROUP_NAME
InnoDB
の場合: これは常にNULL
です。NDB
の場合: ログファイルまたはデータファイルが属するログファイルグループの名前。 -
LOGFILE_GROUP_NUMBER
InnoDB
の場合: これは常にNULL
です。NDB
の場合: ディスクデータ undo ログファイルの場合、ログファイルが属するログファイルグループの自動生成された ID 番号。 これは、この undo ログファイルのndbinfo.dict_obj_info
テーブルのid
カラムおよびndbinfo.logspaces
テーブルおよびndbinfo.logspaces
テーブルのlog_id
カラムに表示される値と同じです。 -
ENGINE
InnoDB
の場合: この値は常にInnoDB
です。NDB
の場合: この値は常にndbcluster
です。 -
FULLTEXT_KEYS
これは常に
NULL
です。 -
DELETED_ROWS
これは常に
NULL
です。 -
UPDATE_COUNT
これは常に
NULL
です。 -
FREE_EXTENTS
InnoDB
の場合: 現在のデータファイル内の完全に使用可能なエクステントの数。NDB
の場合: ファイルでまだ使用されていないエクステントの数。 -
TOTAL_EXTENTS
InnoDB
の場合: 現在のデータファイルで使用されている全エクステントの数。 ファイルの最後にある部分エクステントはカウントされません。NDB
の場合: ファイルに割り当てられたエクステントの合計数。 -
EXTENT_SIZE
InnoDB
の場合: ページサイズが 4KB、8KB または 16KB のファイルのエクステントサイズは 1048576 (1MB) です。 エクステントサイズは、32KB のページサイズのファイルの場合 2097152 バイト (2MB)、64KB のページサイズのファイルの場合 4194304 (4MB) です。FILES
では、InnoDB
のページサイズはレポートされません。 ページサイズは、innodb_page_size
システム変数によって定義されます。 エクステントサイズ情報は、FILES.FILE_ID = INNODB_TABLESPACES.SPACE
が存在するINNODB_TABLESPACES
テーブルから取得することもできます。NDB
の場合: ファイルのエクステントのサイズ (バイト単位)。 -
INITIAL_SIZE
InnoDB
の場合: ファイルの初期サイズ (バイト単位)。NDB
の場合: ファイルのサイズ (バイト単位)。 これは、ファイルの作成に使用されたCREATE LOGFILE GROUP
、ALTER LOGFILE GROUP
、CREATE TABLESPACE
、またはALTER TABLESPACE
ステートメントのINITIAL_SIZE
句に使用された値と同じです。 -
MAXIMUM_SIZE
InnoDB
の場合: ファイルで許可される最大バイト数。 事前定義済のシステムテーブルスペースデータファイルを除くすべてのデータファイルの値はNULL
です。 システムテーブルスペースの最大ファイルサイズは、innodb_data_file_path
によって定義されます。 グローバル一時テーブルスペースの最大ファイルサイズは、innodb_temp_data_file_path
によって定義されます。 事前定義済のシステムテーブルスペースデータファイルのNULL
値は、ファイルサイズ制限が明示的に定義されていないことを示します。NDB
の場合: この値は、常にINITIAL_SIZE
の値と同じです。 -
AUTOEXTEND_SIZE
テーブルスペースの自動拡張サイズ。
NDB
の場合、AUTOEXTEND_SIZE
は常にNULL
です。 -
CREATION_TIME
これは常に
NULL
です。 -
LAST_UPDATE_TIME
これは常に
NULL
です。 -
LAST_ACCESS_TIME
これは常に
NULL
です。 -
RECOVER_TIME
これは常に
NULL
です。 -
TRANSACTION_COUNTER
これは常に
NULL
です。 -
VERSION
InnoDB
の場合: これは常にNULL
です。NDB
の場合: ファイルのバージョン番号。 -
ROW_FORMAT
InnoDB
の場合: これは常にNULL
です。NDB
の場合:FIXED
またはDYNAMIC
のいずれか。 -
TABLE_ROWS
これは常に
NULL
です。 -
AVG_ROW_LENGTH
これは常に
NULL
です。 -
DATA_LENGTH
これは常に
NULL
です。 -
MAX_DATA_LENGTH
これは常に
NULL
です。 -
INDEX_LENGTH
これは常に
NULL
です。 -
DATA_FREE
InnoDB
の場合: テーブルスペース全体の空き領域の合計量 (バイト)。 システムテーブルスペースおよび一時テーブルのテーブルスペースを含む事前定義済のシステムテーブルスペースには、1 つ以上のデータファイルを含めることができます。NDB
の場合: これは常にNULL
です。 -
CREATE_TIME
これは常に
NULL
です。 -
UPDATE_TIME
これは常に
NULL
です。 -
CHECK_TIME
これは常に
NULL
です。 -
CHECKSUM
これは常に
NULL
です。 -
STATUS
InnoDB
の場合: デフォルトでは、この値はNORMAL
です。InnoDB
file-per-table テーブルスペースは、テーブルスペースがまだ使用できないことを示すIMPORTING
を報告する場合があります。NDB
の場合: NDB Cluster ディスクデータファイルの場合、この値は常にNORMAL
です。 -
EXTRA
InnoDB
の場合: これは常にNULL
です。NDB
の場合: (NDB 8.0.15 以降) undo ログファイルの場合、このカラムには undo ログバッファサイズが表示され、データファイルの場合は常に NULL になります。 詳細は、次のいくつかの段落で説明します。NDBCLUSTER
では、各データファイルと各 undo ログファイルのコピーがクラスタ内の各データノードに格納されます。 NDB 8.0.13 以降では、FILES
テーブルにはそのようなファイルごとに 1 つの行のみが含まれます。 4 つのデータノードを持つ NDB Cluster で次の 2 つのステートメントを実行するとします:CREATE LOGFILE GROUP mygroup ADD UNDOFILE 'new_undo.dat' INITIAL_SIZE 2G ENGINE NDBCLUSTER; CREATE TABLESPACE myts ADD DATAFILE 'data_1.dat' USE LOGFILE GROUP mygroup INITIAL_SIZE 256M ENGINE NDBCLUSTER;
これら 2 つのステートメントを正常に実行すると、
FILES
テーブルに対する次のクエリーのような結果が表示されます:mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA -> FROM INFORMATION_SCHEMA.FILES -> WHERE ENGINE = 'ndbcluster'; +--------------------+-----------+--------------------------+ | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA | +--------------------+-----------+--------------------------+ | mygroup | UNDO LOG | UNDO_BUFFER_SIZE=8388608 | | mygroup | DATAFILE | NULL | +--------------------+-----------+--------------------------+
undo ログバッファーサイズ情報が NDB 8.0.13 で誤って削除されましたが、NDB 8.0.15 で復元されました。 (Bug #92796、Bug #28800252)
NDB 8.0.13 より前では、
FILES
テーブルには、ファイルが属する各データノード上のこれらの各ファイルの行と、その Undo バッファーのサイズが含まれていました。 これらのバージョンでは、次に示すように、同じクエリーの結果にデータノードごとに 1 つの行が含まれます:+--------------------+-----------+-----------------------------------------+ | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA | +--------------------+-----------+-----------------------------------------+ | mygroup | UNDO LOG | CLUSTER_NODE=5;UNDO_BUFFER_SIZE=8388608 | | mygroup | UNDO LOG | CLUSTER_NODE=6;UNDO_BUFFER_SIZE=8388608 | | mygroup | UNDO LOG | CLUSTER_NODE=7;UNDO_BUFFER_SIZE=8388608 | | mygroup | UNDO LOG | CLUSTER_NODE=8;UNDO_BUFFER_SIZE=8388608 | | mygroup | DATAFILE | CLUSTER_NODE=5 | | mygroup | DATAFILE | CLUSTER_NODE=6 | | mygroup | DATAFILE | CLUSTER_NODE=7 | | mygroup | DATAFILE | CLUSTER_NODE=8 | +--------------------+-----------+-----------------------------------------+
InnoDB
データファイルには、次のノートが適用されます。
FILES
によってレポートされるデータは、オープンファイルのInnoDB
インメモリーキャッシュからレポートされます。 比較すると、INNODB_DATAFILES
はInnoDB
SYS_DATAFILES
内部データディクショナリテーブルのデータをレポートします。FILES
によってレポートされるデータには、グローバル一時テーブルスペースデータが含まれます。 このデータは、InnoDB
SYS_DATAFILES
内部データディクショナリテーブルでは使用できないため、INNODB_DATAFILES
ではレポートされません。undo テーブルスペースデータは、個別の undo テーブルスペースが存在する場合に
FILES
によってレポートされます。undo テーブルスペースデータは、デフォルトでは MySQL 8.0 にあります-
次のクエリーは、
InnoDB
テーブルスペースに関連するすべてのデータを返します。SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS FROM INFORMATION_SCHEMA.FILES WHERE ENGINE='InnoDB'\G
FILES
テーブルには、ディスクデータ files に関する情報のみが表示されます。個々のNDB
テーブルのディスク領域割当てまたは可用性の決定には使用できません。 ただし、ndb_desc を使用して、データがディスク上に格納されたNDB
テーブルごとにどれだけの領域が割り当てられているかとともに、そのテーブルに対しディスク上のデータのストレージに利用できる領域がどれだけ残っているかも表示できます。CREATION_TIME
、LAST_UPDATE_TIME
およびLAST_ACCESSED
の値は、オペレーティングシステムによってレポートされ、NDB
ストレージエンジンによって提供されません。 オペレーティングシステムによって値が指定されていない場合、これらのカラムにはNULL
が表示されます。-
TOTAL EXTENTS
カラムとFREE_EXTENTS
カラムの違いは、ファイルで現在使用されているエクステントの数です:SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = './myfile.dat';
ファイルで使用されているディスク領域の量を概算するには、その差に
EXTENT_SIZE
カラムの値を乗算します。これにより、ファイルのエクステントのサイズがバイト単位で指定されます:SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE AS bytes_used FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = './myfile.dat';
同様に、
FREE_EXTENTS
とEXTENT_SIZE
とを乗算すると、特定のファイルに利用できる残りの領域の容量を見積もることができます。SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = './myfile.dat';
重要前述のクエリーで生成されたバイト値は概算に過ぎず、その精度は
EXTENT_SIZE
の値に反比例します。 つまり、EXTENT_SIZE
が大きくなれば、概算の精度は低くなります。エクステントがいったん使用されると、エクステントが含まれているデータファイルを破棄せずに再度解放することはできません。 これにより、ディスクデータのテーブルからの削除はディスクスペースを解放しないことになります。
エクステントサイズは
CREATE TABLESPACE
ステートメントで設定できます。 詳細は、セクション13.1.21「CREATE TABLESPACE ステートメント」を参照してください。 -
NDB 8.0.13 より前では、ログファイルグループの作成後に、
FILE_NAME
カラムにNULL
があるFILES
テーブルに追加の行が存在していました。 NDB 8.0.13 以降では、どのファイルにも対応していないこの行は表示されなくなり、ndbinfo.logspaces
テーブルをクエリーして undo ログファイルの使用状況情報を取得する必要があります。 詳細は、このテーブルおよび セクション23.5.10.1「NDB Cluster ディスクデータオブジェクト」 の説明を参照してください。この項目の残りの説明は NDB 8.0.12 以前にのみ適用されます。
FILE_NAME
カラムにNULL
がある行では、FILE_ID
カラムの値は常に0
で、FILE_TYPE
カラムの値は常にUNDO LOG
で、STATUS
カラムの値は常にNORMAL
です。ENGINE
カラムの値は常にndbcluster
です。この行の
FREE_EXTENTS
カラムには、名前と番号がそれぞれLOGFILE_GROUP_NAME
カラムとLOGFILE_GROUP_NUMBER
カラムに表示される特定のログファイルグループに属す、すべての Undo ファイルで利用可能な空きエクステントの合計数が表示されます。NDB Cluster に既存のログファイルグループがなく、次のステートメントを使用して作成するとします:
mysql> CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE = 16M UNDO_BUFFER_SIZE = 1M ENGINE = NDB;
FILES
テーブルにクエリーすると、NULL
行が表示されます。mysql> SELECT DISTINCT FILE_NAME AS File, FREE_EXTENTS AS Free, TOTAL_EXTENTS AS Total, EXTENT_SIZE AS Size, INITIAL_SIZE AS Initial FROM INFORMATION_SCHEMA.FILES; +--------------+---------+---------+------+----------+ | File | Free | Total | Size | Initial | +--------------+---------+---------+------+----------+ | undofile.dat | NULL | 4194304 | 4 | 16777216 | | NULL | 4184068 | NULL | 4 | NULL | +--------------+---------+---------+------+----------+
Undo ロギングに利用できる空きエクステントの総数は常に、Undo ファイルの維持に必要なオーバーヘッドのために、ログファイルグループ内のすべての Undo ファイルの
TOTAL_EXTENTS
カラムの値の合計よりもいくぶん少なくなります。 これは、ログファイルグループに 2 番目の Undo ファイルを追加しから、FILES
テーブルに対して前述のクエリーを繰り返すと表示できます。mysql> ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' INITIAL_SIZE = 4M ENGINE = NDB; mysql> SELECT DISTINCT FILE_NAME AS File, FREE_EXTENTS AS Free, TOTAL_EXTENTS AS Total, EXTENT_SIZE AS Size, INITIAL_SIZE AS Initial FROM INFORMATION_SCHEMA.FILES; +----------------+---------+---------+------+----------+ | File | Free | Total | Size | Initial | +----------------+---------+---------+------+----------+ | undofile.dat | NULL | 4194304 | 4 | 16777216 | | undofile02.dat | NULL | 1048576 | 4 | 4194304 | | NULL | 5223944 | NULL | 4 | NULL | +----------------+---------+---------+------+----------+
このログファイルグループを使用したディスクデータテーブルが Undo ロギングに利用できる空き領域の容量 (バイト単位) は、空きエクステントの数と初期サイズとを乗算すると概算できます。
mysql> SELECT FREE_EXTENTS AS 'Free Extents', FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes' FROM INFORMATION_SCHEMA.FILES WHERE LOGFILE_GROUP_NAME = 'lg1' AND FILE_NAME IS NULL; +--------------+------------+ | Free Extents | Free Bytes | +--------------+------------+ | 5223944 | 20895776 | +--------------+------------+
「NDB Cluster ディスクデータ」テーブルを作成し、そのテーブルにいくつかの行を挿入すると、次の例のように、後で undo ロギング用に残っている領域の量を確認できます:
mysql> CREATE TABLESPACE ts1 ADD DATAFILE 'data1.dat' USE LOGFILE GROUP lg1 INITIAL_SIZE 512M ENGINE = NDB; mysql> CREATE TABLE dd ( c1 INT NOT NULL PRIMARY KEY, c2 INT, c3 DATE ) TABLESPACE ts1 STORAGE DISK ENGINE = NDB; mysql> INSERT INTO dd VALUES (NULL, 1234567890, '2007-02-02'), (NULL, 1126789005, '2007-02-03'), (NULL, 1357924680, '2007-02-04'), (NULL, 1642097531, '2007-02-05'); mysql> SELECT FREE_EXTENTS AS 'Free Extents', FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes' FROM INFORMATION_SCHEMA.FILES WHERE LOGFILE_GROUP_NAME = 'lg1' AND FILE_NAME IS NULL; +--------------+------------+ | Free Extents | Free Bytes | +--------------+------------+ | 5207565 | 20830260 | +--------------+------------+
-
NDB 8.0.13 より前は、「NDB Cluster ディスクデータ」テーブルスペースごとに追加の行が
FILES
テーブルに存在していました。 実際のファイルに対応していなかったため、NDB 8.0.13 で削除されました。 この行にはFILE_NAME
カラムの値に対するNULL
があり、FILE_ID
カラムの値は常に0
で、FILE_TYPE
カラムの値は常にTABLESPACE
で、STATUS
カラムの値はNORMAL
であり、ENGINE
カラムの値は常にNDBCLUSTER
です。NDB 8.0.13 以降では、ndb_desc ユーティリティーを使用して「ディスクデータ」テーブルスペースに関する情報を取得できます。 詳細は、セクション23.5.10.1「NDB Cluster ディスクデータオブジェクト」 および ndb_desc の説明を参照してください。
NDB Cluster ディスクデータオブジェクトに関する追加情報および情報の作成、削除、および取得の例については、セクション23.5.10「NDB Cluster ディスクデータテーブル」 を参照してください。