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


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

8.4.6 テーブルサイズの制限

MySQL データベースの事実上の最大テーブルサイズは、通常、MySQL の内部制限ではなくオペレーティングシステムのファイルサイズに関する制約によって判断します。 オペレーティングシステムのファイルサイズに関する最新情報は、オペレーティングシステム固有のドキュメントを参照してください。

Windows ユーザーの場合、FAT および VFAT (FAT32) は、MySQL で本番使用に適しているとは見なされません。 代わりに NTFS を使用してください。

全テーブルエラーが発生した場合は、いくつかの理由が考えられます:

  • ディスクがいっぱいになっている可能性がある。

  • InnoDB テーブルを使用しており、InnoDB テーブルスペースファイルの領域が不足しています。 最大テーブルスペースサイズは、テーブルの最大サイズでもあります。 テーブルスペースのサイズ制限については、セクション15.22「InnoDB の制限」 を参照してください。

    一般に、サイズが 1TB を超えるテーブルでは、テーブルを複数のテーブルスペースファイルにパーティション化することをお薦めします。

  • オペレーティングシステムのファイルサイズ制限に達しました。 たとえば、最大 2GB のサイズのファイルのみをサポートするオペレーティングシステムで MyISAM テーブルを使用しており、データファイルまたはインデックスファイルに対してこの制限に達しているとします。

  • MyISAM テーブルを使用していて、テーブルに必要な領域が内部ポインタサイズによって許可されているサイズを超えている。 MyISAM では、データファイルとインデックスファイルのサイズはデフォルトで最大 256T バイトですが、この制限は、65,536T バイト (2567 − 1 バイト) の最大許容サイズまで変更できます。

    デフォルトの制限より大きな MyISAM テーブルが必要であり、オペレーティングシステムが大きなファイルをサポートしている場合は、CREATE TABLE ステートメントは AVG_ROW_LENGTH オプションと MAX_ROWS オプションをサポートします。 セクション13.1.20「CREATE TABLE ステートメント」を参照してください。 サーバーはこれらのオプションを使用して、許可するテーブルのサイズを決定します。

    ポインタサイズが既存のテーブルに対して小さすぎる場合は、ALTER TABLE でオプションを変更して、テーブルの最大許容サイズを増やすことができます。 セクション13.1.9「ALTER TABLE ステートメント」を参照してください。

    ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

    AVG_ROW_LENGTH は、BLOB カラムまたは TEXT カラムを含むテーブルに対してのみ指定する必要があります。この場合、MySQL では、行数にのみ基づいて必要な領域を最適化することはできません。

    MyISAM テーブルのデフォルトのサイズ制限を変更するには、内部行ポインタに使用されるバイト数を設定する myisam_data_pointer_size を設定します。 MAX_ROWS オプションを指定しない場合、新しいテーブルのポインタサイズを設定するためにこの値が使用されます。 myisam_data_pointer_size の値は 2 から 7 で指定できます。 4 の値は 4G バイトまでのテーブルを許可し、6 の値は 256T バイトまでのテーブルを許可します。

    次のステートメントを使用すると、データファイルおよびインデックスファイルの最大サイズを確認できます。

    SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';

    myisamchk -dv /path/to/table-index-file も使用できます。 セクション13.7.7「SHOW ステートメント」またはセクション4.6.4「myisamchk — MyISAM テーブルメンテナンスユーティリティー」を参照してください。

    MyISAM テーブルのファイルサイズ制限に対処するその他の方法は次のとおりです。

  • MEMORY (HEAP) ストレージエンジンを使用している場合は、max_heap_table_size システム変数の値を増やす必要があります。 セクション5.1.8「サーバーシステム変数」を参照してください。