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


MySQL 5.6 リファレンスマニュアル  /  ...  /  テーブルサイズの制限

D.10.3 テーブルサイズの制限

MySQL データベースの事実上の最大テーブルサイズは、通常、MySQL の内部制限ではなくオペレーティングシステムのファイルサイズに関する制約によって判断します。次の表に、オペレーティングシステムのファイルサイズの制限に関するいくつかの例を示します。これは、大まかなガイドに過ぎず、確実なものではありません。もっとも新しい情報については、使用しているオペレーティングシステムに固有のドキュメントを必ず確認してください。

オペレーティングシステム ファイルサイズの制限
Win32 (FAT/FAT32) 2G バイト/4G バイト
Win32 (NTFS) 2T バイト (これを超える可能性あり)
Linux 2.2-Intel 32 ビット 2G バイト (LFS: 4G バイト)
Linux 2.4+ (ext3 ファイルシステムを使用) 4T バイト
Solaris 9/10 16T バイト
OS X (HFS+) 2T バイト

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

Linux 2.2 では、ext2 ファイルシステム用の Large File Support (LFS) パッチを使用すると、サイズが 2G バイトより大きな MyISAM テーブルを取得できます。ほとんどの最近の Linux 配布は、カーネル 2.4 以上に基づいており、必要な LFS パッチはすべて含まれています。Linux 2.4 では、大きなファイル (最大 2T バイト) をサポートするための ReiserFS 用のパッチも存在しています。JFS および XFS では、Linux でペタバイト以上のファイルが可能です。

Linux における LFS に関する詳細な概要については、http://www.suse.de/~aj/linux_lfs.html にある Andreas Jaeger 氏の「Large File Support in Linux」のページを参照してください。

フルテーブルエラーが発生した場合、その理由はいくつかあります。

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

  • InnoDB ストレージエンジンが、複数のファイルから作成できるテーブルスペース内に InnoDB テーブルを保持している。このため、テーブルが個々のファイルの最大サイズを超えることが可能です。テーブルスペースには、生のディスクパーティションを含めることができ、非常に大きなテーブルが許可されます。最大のテーブルスペースサイズは 64T バイトです。

    InnoDB テーブルを使用している場合、InnoDB テーブルスペース内のスペースが不足します。この場合、解決策は InnoDB テーブルスペースを拡張することです。セクション14.5.7「InnoDB ログファイルの数またはサイズの変更、および InnoDB テーブルスペースのサイズの変更」を参照してください。

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

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

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

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

    ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

    BLOB または TEXT カラムを含むテーブルにのみ、AVG_ROW_LENGTH を指定する必要があります。この場合、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.5「SHOW 構文」またはセクション4.6.3「myisamchk — MyISAM テーブルメンテナンスユーティリティー」を参照してください。

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

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


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