Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


21.30.1 INFORMATION_SCHEMA FILES テーブル

FILES テーブルは MySQL NDB ディスクデータテーブルが格納されるファイルに関する情報を提供します。

注記

このテーブルは、ディスクデータファイルに関する情報だけを提供します。個々の NDB テーブルのディスク領域の割り当てまたは可用性の判断には使用できません。ただし、ndb_desc を使用して、データがディスク上に格納された NDB テーブルごとにどれだけの領域が割り当てられているかとともに、そのテーブルに対しディスク上のデータのストレージに利用できる領域がどれだけ残っているかも表示できます。詳細は、セクション18.4.10「ndb_desc — 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 GROUP によって作成された UNDO ログファイルの名前か、CREATE TABLESPACE または ALTER TABLESPACE で作成されたデータファイルの名前です。

  • FILE_TYPE は、UNDOFILEDATAFILE、または TABLESPACE のいずれかの値です。

  • TABLESPACE_NAME は、ファイルが関連付けられているテーブルスペースの名前です。

  • 現在、TABLESPACE_CATALOG カラムの値は常に NULL です。

  • TABLE_NAME は、関連するファイルがある場合、そのファイルに関連付けられたディスクデータテーブルの名前です。

  • LOGFILE_GROUP_NAME カラムは、ログファイルまたはデータファイルが属しているログファイルのグループに名前を付けます。

  • UNDO ログファイルでは、LOGFILE_GROUP_NUMBER には、ログファイルが属しているログファイルグループの自動生成された ID 番号が含まれます。

  • MySQL Cluster ディスクデータのログファイルまたはデータファイルに対し、ENGINE カラムの値は常に NDB または NDBCLUSTER になります。

  • MySQL Cluster ディスクデータのログファイルまたはデータファイルでは、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_EXTENTSEXTENT_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.18「CREATE TABLESPACE 構文」を参照してください。

  • INITIAL_SIZE カラムには、ファイルのサイズがバイトで表示されます。これは、ファイルの作成に使用された CREATE LOGFILE GROUPALTER LOGFILE GROUPCREATE TABLESPACE、または ALTER TABLESPACE ステートメントの INITIAL_SIZE 句に使用された値と同じです。

    MySQL Cluster ディスクデータファイルの場合、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 Cluster ディスクデータファイルでは、次のカラムは常に 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 Cluster ディスクデータファイルでは、STATUS カラムの値は常に NORMAL です。

  • MySQL Cluster ディスクデータファイルでは、各データノードがファイルのコピーを持っているため、EXTRA カラムには、ファイルが属しているデータノードが表示されます。4 つのデータノードを持つ MySQL Cluster で、次のステートメントを使用するとします。

    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 テーブルは、非標準テーブルです。

  • ログファイルグループの作成すると、追加の行が FILES テーブルに存在します。この行は FILE_NAME カラムの値に対して NULL です。この行に対し、FILE_ID カラムの値は常に 0 で、FILE_TYPE カラムの値は常に UNDO FILE で、STATUS カラムの値は常に NORMAL になります。現在、ENGINE カラムの値は常に NDBCLUSTER です。

    この行の FREE_EXTENTS カラムには、名前と番号がそれぞれ LOGFILE_GROUP_NAME カラムと LOGFILE_GROUP_NUMBER カラムに表示される特定のログファイルグループに属す、すべての Undo ファイルで利用可能な空きエクステントの合計数が表示されます。

    MySQL Cluster に既存のログファイルグループが存在せず、次のステートメントを使用してログファイルグループを作成するとします。

    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)
    

    MySQL Cluster ディスクデータテーブルを作成し、複数の行を挿入した場合、たとえば、その後 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)
    
  • データファイルがテーブルスペースに関連付けられているかどうかを問わず、MySQL Cluster テーブルスペースの追加の行が FILES テーブルに存在します。この行は FILE_NAME カラムの値に対して NULL です。この行に対し、FILE_ID カラムの値は常に 0 で、FILE_TYPE カラムの値は常に TABLESPACE で、STATUS カラムの値は常に NORMAL になります。現在、ENGINE カラムの値は常に NDBCLUSTER です。

  • FILES テーブルに関連付けられた SHOW ステートメントはありません。

  • MySQL ディスクデータオブジェクトの作成と削除の追加情報と例については、セクション18.5.12「MySQL Cluster ディスクデータテーブル」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.