FILES テーブルは MySQL
NDB ディスクデータ
テーブルが保存されるファイルに関する情報を提供します。
INFORMATION_SCHEMA
名 |
SHOW 名 |
備考 |
FILE_ID |
MySQL 拡張 | |
FILE_NAME |
MySQL 拡張 | |
FILE_TYPE |
MySQL 拡張 | |
TABLESPACE_NAME |
MySQL 拡張 | |
TABLE_CATALOG |
MySQL 拡張 | |
TABLE_SCHEMA |
MySQL 拡張 | |
TABLE_NAME |
MySQL 拡張 | |
LOGFILE_GROUP_NAME |
MySQL 拡張 | |
LOGFILE_GROUP_NUMBER |
MySQL 拡張 | |
ENGINE |
MySQL 拡張 | |
FULLTEXT_KEYS |
MySQL 拡張 | |
DELETED_ROWS |
MySQL 拡張 | |
UPDATE_COUNT |
MySQL 拡張 | |
FREE_EXTENTS |
MySQL 拡張 | |
TOTAL_EXTENTS |
MySQL 拡張 | |
EXTENT_SIZE |
MySQL 拡張 | |
INITIAL_SIZE |
MySQL 拡張 | |
MAXIMUM_SIZE |
MySQL 拡張 | |
AUTOEXTEND_SIZE |
MySQL 拡張 | |
CREATION_TIME |
MySQL 拡張 | |
LAST_UPDATE_TIME |
MySQL 拡張 | |
LAST_ACCESS_TIME |
MySQL 拡張 | |
RECOVER_TIME |
MySQL 拡張 | |
TRANSACTION_COUNTER |
MySQL 拡張 | |
VERSION |
MySQL 拡張 | |
ROW_FORMAT |
MySQL 拡張 | |
TABLE_ROWS |
MySQL 拡張 | |
AVG_ROW_LENGTH |
MySQL 拡張 | |
DATA_LENGTH |
MySQL 拡張 | |
MAX_DATA_LENGTH |
MySQL 拡張 | |
INDEX_LENGTH |
MySQL 拡張 | |
DATA_FREE |
MySQL 拡張 | |
CREATE_TIME |
MySQL 拡張 | |
UPDATE_TIME |
MySQL 拡張 | |
CHECK_TIME |
MySQL 拡張 | |
CHECKSUM |
MySQL 拡張 | |
STATUS |
MySQL 拡張 | |
EXTRA |
MySQL 拡張 |
注:
FILE_ID
カラムの値は自動生成されます。
FILE_NAME は CREATE LOGFILE
GROUP あるいは ALTER LOGFILE
GRUOP によって作成された
UNDO
ログファイルの名前です。または CREATE
TABLESPACE あるいは ALTER
TABLESPACE
で作成されたデータファイルです。
FILE_TYPE は UNDOFILE
あるいは DATAFILE
のいずれかの値です。
TABLESPACE_NAME
はファイルが関連付けられているテーブルスペースの名前です。
MySQL 5.1 では、TABLESPACE_CATALOG
カラムの値は常に NULL です。
TABLE_NAME
は関連するファイルがある場合にファイルに関連付けられたディスク
データ テーブルの名前です。
LOGFILE_GROUP_NAME
カラムはログファイルあるいはデータファイルが属すログファイルのグループに名前を付けます。
UNDO
ログファイルでは、LOGFILE_GROUP_NUMBER
はログファイルが属すログファイル
グループの自動生成された ID を含みます。
MySQL クラスタ
ディスクデータのログファイルあるいはデータファイルに対し、ENGINE
カラムの値は常に NDB あるいは
NDBCLUSTER になります。
MySQL クラスタ ディスク
データのログファイルに対し、FULLTEXT_KEYS
カラムの値は常に空です。
FREE EXTENTS
カラムはファイルが使用していない拡張の番号を表示します。TOTAL
EXTENTS
カラムはファイルに割り当てられた拡張の総数を表示します。
これらの 2 つのカラムの違いは現在ファイルが使用している拡張の数です。
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
ステートメントで設定できます。詳細については、項12.1.10. 「CREATE TABLESPACE 構文」
をご参照してください。
INITIAL_SIZE
カラムはファイルのサイズをバイトで表示します。これはファイルの作成に使用された
CREATE LOGFILE GROUP、、ALTER
LOGFILE GROUP、CREATE
TABLESPACE、あるいは ALTER
TABLESPACE の INITIAL_SIZE
節に使用された値と同じです。
MySQL 5.1 クラスタ ディス クデータ
ファイルでは、MAXIMUM_SIZE
カラムの値は常に INITIAL_SIZE
と同じで、 AUTOEXTEND_SIZE
カラムは常に空です。
CREATION_TIME
カラムはファイルが作成された日時を表示します。LAST_UPDATE_TIME
カラムはファイルが最後に変更された日時を表示します。
LAST_ACCESSED
カラムはファイルが最後にサーバーによってアクセスされた日時を表示します。
現在は、これらのカラムの値はオペレーティング
システムから知らされたものであり、NDB
ストレージ
エンジンにより供給されたものではありません。オペレーティング
システムが何の値も提供していない場合には、これらのカラムには
0000-00-00 00:00:00が表示されます。
MySQL クラスタ ディスク
データのファイルでは、RECOVER_TIME
および TRANSACTION_COUNTER
カラムは常に 0 です。
MySQL 5.1 クラスタ ディスク データ
ファイルでは、以下のカラムは常に
NULL です。
VERSION
ROW_FORMAT
TABLE_ROWS
AVG_ROW_LENGTH
DATA_LENGTH
MAX_DATA_LENGTH
INDEX_LENGTH
DATA_FREE
CREATE_TIME
UPDATE_TIME
CHECK_TIME
CHECKSUM
MySQLクラスタ ディスク データ
ファイルでは、STATUS
カラムの値は常に NORMAL です。
MySQL クラスタ ディスク データ
ファイルでは、EXTRA
カラムは、各データノードがファイルのコピーを持っているためどのデータノードにファイルが属すかを表示します。例えば、このステートメントを
MySQL クラスタの 4
つのデータノードで使用するとします。
CREATE LOGFILE GROUP mygroup
ADD UNDOFILE 'new_undo.dat'
INITIAL_SIZE 2G
ENGINE NDB;
CREATE LOGFILE GROUP
ステートメントの実行を完了すると、FILES
テーブルに対するこのクエリの以下の結果に類似した結果が表示されます。
mysql>SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA->FROM INFORMATION_SCHEMA.FILES->WHERE FILE_NAME = 'new_undo.dat';+--------------------+-------------+----------------+ | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA | +--------------------+-------------+----------------+ | mygroup | UNDO FILE | CLUSTER_NODE=3 | | mygroup | UNDO FILE | CLUSTER_NODE=4 | | mygroup | UNDO FILE | CLUSTER_NODE=5 | | mygroup | UNDO FILE | CLUSTER_NODE=6 | +--------------------+-------------+----------------+ 4 rows in set (0.01 sec)
FILES
テーブルは非標準のテーブルです。それは
MySQL 5.1.6 に追加されています。
MySQL 5.1.14 を開始すると、ログファイル
グループの作成に続いて FILES
テーブルに追加の行が表示されます。この行は
FILE_NAME カラムの値に対して
NULL
です。というのはこの行に対し、FILE_ID
カラムの値は常に 0
で、FILE_TYPE カラムは常に
UNDO FILEで、STATUS
カラムは常に NORMAL
になります。MySQL 5.1
では、ENGINE カラムの値は常に
ndbcluster です。
この行は FREE_EXTENTS カラムで
LOGFILE_GROUP_NAME および
LOGFILE_GROUP_NUMBER
カラムにそれぞれその名前と数が表示された所定のログファイル
グループに属すすべての undo
ファイルに利用できるフリー拡張の総数を表示します。
MySQL クラスタに既存のログファイルが無いものとして、以下のステートメントを使用してログファイルを 1 つ作成するとします。
mysql>CREATE LOGFILE GROUP lg1->ADD UNDOFILE 'undofile.dat'->INITIAL_SIZE = 16M->UNDO_BUFFER_SIZE = 1M->ENGINE = NDB;Query OK, 0 rows affected (3.81 sec)
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 | +--------------+---------+---------+------+----------+ 2 rows in set (0.01 sec)
undo
ロギングに利用できるフリー拡張の総数は常にログファイルのすべての
undo ファイルに対して undo
ファイルを維持に必要なオーバーヘッドにより
TOTAL_EXTENTS
カラムの値の合計より幾分少なくなります。これはログファイル
グループに 2 番目の undo
ファイルを追加すると表示され、FILES
テーブルに対して前のクエリを繰返します。
mysql>ALTER LOGFILE GROUP lg1->ADD UNDOFILE 'undofile02.dat'->INITIAL_SIZE = 4M->ENGINE = NDB;Query OK, 0 rows affected (1.02 sec) 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 | +----------------+---------+---------+------+----------+ 3 rows in set (0.01 sec)
このログファイル グループを使用たディスク データ テーブルによる 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 | +--------------+------------+ 1 row in set (0.02 sec)
ディスク データ テーブルを作成してその中にいくつか行を挿入すると、undo のロギング用に残されたスペースを大まかに知ることができます。
mysql>CREATE TABLESPACE ts1->ADD DATAFILE 'data1.dat'->USE LOGFILE GROUP lg1->INITIAL_SIZE 512M->ENGINE = NDB;Query OK, 0 rows affected (8.71 sec) mysql>CREATE TABLE dd (->c1 INT NOT NULL PRIMARY KEY,->c2 INT,->c3 DATE->)->TABLESPACE ts1 STORAGE DISK->ENGINE = NDB;Query OK, 0 rows affected (2.11 sec) 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');Query OK, 4 rows affected (0.01 sec) 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 | +--------------+------------+ 1 row in set (0.01 sec)
FILES テーブルに関連付けられた
SHOW コマンドはありません。
FILES
テーブルを使用してクラスタ ディスク データ
テーブルに関する情報の取得に関する他の例については
項14.11. 「MySQL Cluster ディスク データ ストレージ」
を参照してください。
