MySQLマニュアルより「制限事項」

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの5日目です.



 MySQLマニュアルを読むシリーズを書き始めて5日目。
今日は付録Cの「Limits in MySQL」(MySQLの制限事項)を眺めてみます。ちなみに、少し前まではこれは「付録C]ではなく、「付録D」でした。もともと「C」として記述されていた Release Note が、マニュアル本体から外されて、別途管理となったことによるもののようです。
(バージョン 5.6 の日本語マニュアルが作成されたタイミングでは、まだ、Release Note は本体マニュアルの中にありました。なので、5.6日本語マニュアルを見ると、「D.10 MySQL での制限」となります。


 この章では、以下の制限について記述されています。普段MySQLを使っていても、つい忘れがちなので、この機会に確認しておきましょう。

C.10.1 JOIN
C.10.2 DB数、テーブル数
C.10.3 テーブルサイズ
C.10.4 カラム数とレコードサイズ
C.10.5 .frm ファイルの構造によるもの
C.10.6 Windows での制限


 以下、主なものの抜き書き(詳細はマニュアルを確認ください)

JOIN数: 61
DB数: 無制限(OSの制限による)
テーブル数(InnoDB): 約40億個
テーブルサイズ: OSによる
  Win32(FAT/FAT32): 2GB/4GB
  Win32(NTFS):2TB
  Linux2.2:2GB
  Linux2.4(ext3):4TB
  Solaris9/10: 16TB
  OS/X(HFS+):2TB
カラム数: 4096個以下/テーブル (細かい計算式での説明あり
ENUM数: 255以下
ENUM素数:理論上 65535だが実際(別の制限により)3000未満。


#そういえばテーブル名の長さに関する制限事項が見当たらないな。。Oralceでの30文字制限みたいなものはなかった(OS依存)だと思っていたけど、裏が取れない。。