MySQL バージョン 3.22 では、テーブルのサイズは 4 GB(4 ギガバイト)に制限されていました。MySQL バージョン 3.23 の MyISAM テーブル型では、テーブルの最大サイズが 800万テラバイト(2^63 バイト)に増えました。有効なテーブルのサイズがこのように大きくなったことで、現在では、MySQL データベースに効果的なテーブルの最大サイズは通常、MySQL 内部の制限ではなく、オペレーティングシステムのファイルサイズに関する制限によって決まります。
次の表は、オペレーティングシステムのファイルサイズに関する制限の例を示しています。
| オペレーティングシステム | ファイルサイズの制限 |
| Linux-Intel 32-bit | 2 GB、LFS 使用の場合はそれ以上 |
| Linux-Alpha | 8 TB(?) |
| Solaris 2.5.1 | 2 GB(パッチにより 4GB まで可) |
| Solaris 2.6 | 4 GB(フラグにより変更可能) |
| Solaris 2.7 Intel | 4 GB |
| Solaris 2.7 UltraSPARC | 512 GB |
Linux 2.2 では、ext2 ファイルシステム用の LFS パッチを使用することで、2 GB より大きいサイズのテーブルを使用することができます。また、Linux 2.4 には ReiserFS および ext3 が組み込まれており、これらを使用することで大きいファイルがサポートされます。現在の Linux ディストリビューションのほとんどはカーネル 2.4 に基づいており、必要な Large File Support(LFS)パッチすべてがすでに組み込まれています。しかし、それでも、有効な最大ファイルサイズはいくつかの要因によって左右されます。そのうちの 1 つが、MySQL テーブルを格納するために使用されるファイルシステムです。
Linux における LFS の詳細については、Andreas Jaeger の「Large File Support in Linux」(http://www.suse.de/~aj/linux_lfs.html)を参照してください。
デフォルトでは、MySQL では有効な最大サイズが約 4 GB の内部構造を持つ MyISAM テーブルが作成されます。SHOW TABLE STATUS コマンドまたは myisamchk -dv table_name を使用して、テーブルの最大サイズをチェックすることができます。 See 項4.6.8. 「SHOW 構文」。
4 GB より大きいサイズのテーブルが必要な場合(オペレーティングシステムで大規模ファイルがサポートされていれば)、CREATE TABLE ステートメントで AVG_ROW_LENGTH および MAX_ROWS オプションを指定することができます。4 GB を超えるテーブルを作成するには、これらのオプションを使用してください。See 項6.5.3. 「CREATE TABLE 構文」。また、ALTER TABLE を使用して、後でこれらのオプションを設定することもできます。 See 項6.5.4. 「ALTER TABLE 構文」。
MyISAM テーブルのファイルサイズに関する制限に対処する方法として、他に次のような方法があります。
読み込み専用の大規模テーブルの場合、myisampack を使用してテーブルを圧縮することができる。myisampack では通常、テーブルが少なくとも 50% 圧縮されるので、結果的にはるかに大きいテーブルを使用することが可能である。また、myisampack を使用して、複数のテーブルを 1 つのテーブルにマージすることもできる。 See 項4.8.4. 「myisampack(MySQL 圧縮読み取り専用テーブルジェネレータ)」。
また、MyISAM データファイルに関するオペレーティングシステムのファイル制限に対処する方法として、RAID オプションを使用することもできる。 See 項6.5.3. 「CREATE TABLE 構文」。
MySQL に組み込まれている MERGE ライブラリを使用して、同一のテーブルの集合を 1 つのテーブルとして処理することもできる。See 項7.2. 「MERGE テーブル」。















