このページは機械翻訳したものです。
FILES テーブルには、MySQL テーブルスペースデータが格納されているファイルに関する情報が表示されます。
FILES テーブルには、InnoDB データファイルに関する情報が表示されます。 NDB Cluster では、このテーブルは「NDB Cluster ディスクデータ」テーブルが格納されているファイルに関する情報も提供します。 InnoDB に固有の追加情報については、このセクションの後半の InnoDB の注意 を参照してください。NDB Cluster に固有の追加情報については、NDB に関する注意事項 を参照してください。
FILES テーブルには、次のカラムがあります:
-
FILE_IDInnoDBの場合:space_idまたはfil_space_t::idとも呼ばれるテーブルスペース ID。NDBの場合: ファイル識別子。FILE_IDカラムの値は自動生成されます。 -
FILE_NAMEInnoDBの場合: データファイルの名前。 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_TYPEInnoDBの場合: テーブルスペースのファイルタイプ。InnoDBファイルには、3 つのファイルタイプがあります。TABLESPACEは、テーブル、インデックスまたはその他の形式のユーザーデータを保持するシステムテーブルスペースファイル、一般テーブルスペースファイルまたはファイルごとのテーブルスペースファイルのファイルタイプです。TEMPORARYは、一時テーブルスペースのファイルタイプです。UNDO LOGは、undo レコードを保持する undo テーブルスペースのファイルタイプです。NDBの場合:UNDO LOGまたはDATAFILEのいずれかの値。 NDB 8.0.13 より前では、TABLESPACEも可能な値でした。 -
TABLESPACE_NAMEファイルが関連付けられているテーブルスペースの名前。
InnoDBの場合: 一般的なテーブルスペース名は、作成時に指定したとおりです。 テーブルごとのファイルテーブルスペース名は、次の形式で表示されます:。schema_name/table_nameInnoDBシステムのテーブルスペース名はinnodb_systemです。 グローバル一時テーブルスペース名はinnodb_temporaryです。 デフォルトの UNDO テーブルスペース名は、innodb_undo_001およびinnodb_undo_002です。 ユーザーが作成した UNDO テーブルスペースの名前は、作成時に指定したとおりです。 -
TABLE_CATALOGこの値は常に空です。
-
TABLE_SCHEMAこれは常に
NULLです。 -
TABLE_NAMEこれは常に
NULLです。 -
LOGFILE_GROUP_NAMEInnoDBの場合: これは常にNULLです。NDBの場合: ログファイルまたはデータファイルが属するログファイルグループの名前。 -
LOGFILE_GROUP_NUMBERInnoDBの場合: これは常にNULLです。NDBの場合: ディスクデータ undo ログファイルの場合、ログファイルが属するログファイルグループの自動生成された ID 番号。 これは、この undo ログファイルのndbinfo.dict_obj_infoテーブルのidカラムおよびndbinfo.logspacesテーブルおよびndbinfo.logspacesテーブルのlog_idカラムに表示される値と同じです。 -
ENGINEInnoDBの場合: この値は常にInnoDBです。NDBの場合: この値は常にndbclusterです。 -
FULLTEXT_KEYSこれは常に
NULLです。 -
DELETED_ROWSこれは常に
NULLです。 -
UPDATE_COUNTこれは常に
NULLです。 -
FREE_EXTENTSInnoDBの場合: 現在のデータファイル内の完全に使用可能なエクステントの数。NDBの場合: ファイルでまだ使用されていないエクステントの数。 -
TOTAL_EXTENTSInnoDBの場合: 現在のデータファイルで使用されている全エクステントの数。 ファイルの最後にある部分エクステントはカウントされません。NDBの場合: ファイルに割り当てられたエクステントの合計数。 -
EXTENT_SIZEInnoDBの場合: ページサイズが 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_SIZEInnoDBの場合: ファイルの初期サイズ (バイト単位)。NDBの場合: ファイルのサイズ (バイト単位)。 これは、ファイルの作成に使用されたCREATE LOGFILE GROUP、ALTER LOGFILE GROUP、CREATE TABLESPACE、またはALTER TABLESPACEステートメントのINITIAL_SIZE句に使用された値と同じです。 -
MAXIMUM_SIZEInnoDBの場合: ファイルで許可される最大バイト数。 事前定義済のシステムテーブルスペースデータファイルを除くすべてのデータファイルの値は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です。 -
VERSIONInnoDBの場合: これは常にNULLです。NDBの場合: ファイルのバージョン番号。 -
ROW_FORMATInnoDBの場合: これは常にNULLです。NDBの場合:FIXEDまたはDYNAMICのいずれか。 -
TABLE_ROWSこれは常に
NULLです。 -
AVG_ROW_LENGTHこれは常に
NULLです。 -
DATA_LENGTHこれは常に
NULLです。 -
MAX_DATA_LENGTHこれは常に
NULLです。 -
INDEX_LENGTHこれは常に
NULLです。 -
DATA_FREEInnoDBの場合: テーブルスペース全体の空き領域の合計量 (バイト)。 システムテーブルスペースおよび一時テーブルのテーブルスペースを含む事前定義済のシステムテーブルスペースには、1 つ以上のデータファイルを含めることができます。NDBの場合: これは常にNULLです。 -
CREATE_TIMEこれは常に
NULLです。 -
UPDATE_TIMEこれは常に
NULLです。 -
CHECK_TIMEこれは常に
NULLです。 -
CHECKSUMこれは常に
NULLです。 -
STATUSInnoDBの場合: デフォルトでは、この値はNORMALです。InnoDBfile-per-table テーブルスペースは、テーブルスペースがまだ使用できないことを示すIMPORTINGを報告する場合があります。NDBの場合: NDB Cluster ディスクデータファイルの場合、この値は常にNORMALです。 -
EXTRAInnoDBの場合: これは常に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はInnoDBSYS_DATAFILES内部データディクショナリテーブルのデータをレポートします。FILESによってレポートされるデータには、グローバル一時テーブルスペースデータが含まれます。 このデータは、InnoDBSYS_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 ディスクデータテーブル」 を参照してください。