Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

13.7.7.38 SHOW TABLE STATUS ステートメント

SHOW TABLE STATUS    [{FROM | IN}db_name]    [LIKE 'pattern' | WHEREexpr]

SHOW TABLE STATUSSHOW TABLES のように機能しますが、TEMPORARY 以外の各テーブルに関する多くの情報を提供します。 このリストはまた、mysqlshow --statusdb_name コマンドを使用して取得することもできます。LIKE 句 (存在する場合) は、どのテーブル名と照合するかを示します。セクション26.55「SHOW ステートメントの拡張」で説明されているように、WHERE 句を指定すると、より一般的な条件を使用して行を選択できます。

このステートメントはまた、ビューに関する情報も表示します。

SHOW TABLE STATUS 出力には、次のカラムがあります:

  • Name

    テーブルの名前。

  • Engine

    このテーブルのストレージエンジン。第15章「InnoDB ストレージエンジンおよび第16章「代替ストレージエンジンを参照してください。

    パーティション化されたテーブルの場合、Engine には、すべてのパーティションで使用されるストレージエンジンの名前が表示されます。

  • バージョン

    このカラムは未使用です。 MySQL 8.0 で.frm ファイルを削除すると、このカラムには、MySQL 5.7 で最後に使用された.frm ファイルバージョンである10 のハードコードされた値がレポートされるようになりました。

  • Row_format

    行ストレージフォーマット (FixedDynamicCompressedRedundantCompact)。MyISAM テーブルの場合、Dynamic は、myisamchk -dvvPacked としてレポートする内容に対応します。

  • Rows

    行数。MyISAM などの一部のストレージエンジンは、正確な数を格納します。InnoDB などのほかのストレージエンジンの場合、この値は概算であり、実際の値と 40% から 50% まで異なる可能性があります。 このような場合、正確な数を取得するにはSELECT COUNT(*) を使用します。

    INFORMATION_SCHEMA テーブルの場合、Rows 値はNULL です。

    InnoDB テーブルの場合、行カウントは SQL 最適化で使用される単なる概算です。 (InnoDB テーブルがパーティション化されている場合も、これは当てはまります。)

  • Avg_row_length

    平均行長。

  • Data_length

    MyISAM の場合、Data_length はデータファイルの長さ (バイト単位) です。

    InnoDB の場合、Data_length は、クラスタ化されたインデックスに割り当てられるおおよその容量 (バイト単位) です。 具体的には、クラスタ化されたインデックスサイズ (ページ単位) にInnoDB ページサイズを乗算したものです。

    その他のストレージエンジンについては、このセクションの最後にある注を参照してください。

  • Max_data_length

    MyISAM の場合、Max_data_length はデータファイルの最大長です。 これは、このテーブル内に格納できるデータの合計バイト数です (使用されるデータポインタサイズが指定された場合)。

    InnoDB では未使用です。

    その他のストレージエンジンについては、このセクションの最後にある注を参照してください。

  • Index_length

    MyISAM の場合、Index_length はインデックスファイルの長さ (バイト単位) です。

    InnoDB の場合、Index_length は、クラスタ化されていないインデックスに割り当てられる領域の概算量 (バイト単位) です。 具体的には、クラスタ化されていないインデックスサイズの合計 (ページ数) にInnoDB ページサイズを乗算した値です。

    その他のストレージエンジンについては、このセクションの最後にある注を参照してください。

  • Data_free

    割り当てられているが、使用されていないバイト数。

    InnoDB テーブルは、このテーブルが属するテーブルスペースの空き領域をレポートします。 共有テーブルスペース内に存在するテーブルの場合、これはその共有テーブルスペースの空き領域です。 複数のテーブルスペースを使用していて、このテーブルに独自のテーブルスペースがある場合は、そのテーブルのみの空き領域になります。 空き領域とは、完全な空きエクステントから安全上のマージンを引いたバイト数を示します。 空き領域が 0 として表示されている場合でも、新しいエクステントを割り当てる必要がないかぎり、行を挿入できる可能性があります。

    NDB Cluster の場合、Data_free は、ディスク上の「ディスクデータ」テーブルまたはフラグメント用にディスクに割り当てられたが使用されていない領域を表示します。 (メモリー内データリソース使用率は、Data_length カラムによってレポートされます。)

    パーティション化されたテーブルの場合、この値は推定値にすぎず、絶対的に正しいとはかぎりません。 このような場合にこの情報を取得するより正確な方法は、次の例に示すように、INFORMATION_SCHEMAPARTITIONS テーブルをクエリーすることです:

    SELECT SUM(DATA_FREE)    FROM  INFORMATION_SCHEMA.PARTITIONS    WHERE TABLE_SCHEMA = 'mydb'    AND   TABLE_NAME   = 'mytable';

    詳細は、セクション26.21「INFORMATION_SCHEMA PARTITIONS テーブル」を参照してください。

  • Auto_increment

    次のAUTO_INCREMENT 値。

  • Create_time

    いつテーブルが作成されたか。

  • Update_time

    いつデータファイルが最後に更新されたか。 一部のストレージエンジンでは、この値はNULL です。 たとえば、InnoDB はそのシステムテーブルスペース内に複数のテーブルを格納するため、データファイルのタイムスタンプは適用されません。 各InnoDB テーブルが個別の.ibd ファイル内に存在するfile-per-table モードの場合でも、変更バッファリングによってデータファイルへの書き込みが遅延される可能性があるため、ファイルの変更時間は最後の挿入、更新、または削除の時間とは異なります。MyISAM の場合、データファイルのタイムスタンプが使用されますが、Windows ではタイムスタンプは更新によって更新されないため、値は正確ではありません。

    Update_time には、パーティション化されていないInnoDB テーブルに対して最後に実行されたUPDATEINSERT またはDELETE のタイムスタンプ値が表示されます。 MVCC の場合、タイムスタンプ値は最終更新時間とみなされるCOMMIT 時間を反映します。 タイムスタンプは、サーバーの再起動時、またはテーブルがInnoDB データディクショナリキャッシュから削除されたときに永続化されません。

  • Check_time

    いつテーブルが最後にチェックされたか。 すべてのストレージエンジンがこの時間を更新するわけではありません。この場合、値は常にNULL です。

    パーティション化されたInnoDB テーブルの場合、Check_time は常にNULL です。

  • Collation

    テーブルのデフォルトの照合。 出力にはテーブルのデフォルトの文字セットは明示的にリストされませんが、照合順序名は文字セット名で始まります。

  • Checksum

    ライブチェックサム値 (存在する場合)。

  • Create_options

    CREATE TABLE で使用される追加のオプション。

    Create_options には、パーティションテーブルのpartitioned が表示されます。

    MySQL 8.0.16 より前のCreate_options では、file-per-table テーブルスペースに作成されたテーブルに指定されたENCRYPTION 句が表示されます。 MySQL 8.0.16 では、テーブルが暗号化されている場合、または指定された暗号化がスキーマ暗号化と異なる場合、file-per-table テーブルスペースの暗号化句が表示されます。 暗号化句は、一般テーブルスペースに作成されたテーブルには表示されません。 暗号化された file-per-table および一般的なテーブルスペースを識別するには、INNODB_TABLESPACESENCRYPTION カラムをクエリーします。

    strict mode を無効にしてテーブルを作成する場合、指定した行フォーマットがサポートされていないと、ストレージエンジンのデフォルトの行フォーマットが使用されます。 テーブルの実際の行形式は、Row_format カラムにレポートされます。Create_options には、CREATE TABLE ステートメントで指定された行形式が表示されます。

    テーブルのストレージエンジンを変更する場合、新しいストレージエンジンに適用できないテーブルオプションはテーブル定義に保持され、必要に応じて、以前に定義されたオプションを持つテーブルを元のストレージエンジンに戻すことができます。Create_options には、保持されているオプションが表示される場合があります。

  • Comment

    このテーブルを作成するときに使用されたコメント (または、MySQL がテーブル情報にアクセスできなかった理由に関する情報)。

メモ
  • InnoDB テーブルの場合、SHOW TABLE STATUS では、テーブルで予約されている物理サイズを除き、正確な統計は提供されません。 行カウントは、単に SQL 最適化で使用される概算見積もりです。

  • NDB テーブルの場合、このステートメントの出力はAvg_row_length およびData_length カラムの適切な値を示しますが、例外としてBLOB カラムは考慮に入れられません。

  • NDB テーブルの場合、Data_length にはメインメモリーに格納されているデータのみが含まれます。Max_data_length およびData_free カラムはディスクデータに適用されます。

  • 「NDB Cluster ディスクデータの場合」テーブル、Max_data_length には、「ディスクデータ」テーブルまたはフラグメントのディスク部分に割り当てられた領域が表示されます。 (メモリー内データリソース使用率は、Data_length カラムによってレポートされます。)

  • MEMORY テーブルの場合、Data_lengthMax_data_length、およびIndex_length 値はほぼ、割り当てられているメモリーの実際の量を表します。 割り当てアルゴリズムは、割り当て操作の数を減らすために、大量のメモリーを確保します。

  • ビューの場合、Name がビュー名を示し、Create_time が作成時間を示し、CommentVIEW を示すことを除き、SHOW TABLE STATUS によって表示されるほとんどのカラムは 0 またはNULL です。

テーブル情報は、INFORMATION_SCHEMATABLES テーブルからも入手できます。セクション26.38「INFORMATION_SCHEMA TABLES テーブル」を参照してください。