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


MySQL 5.6 リファレンスマニュアル  /  ...  /  .frm ファイル構造により課せられる制限

D.10.5 .frm ファイル構造により課せられる制限

それぞれのテーブルにはテーブル定義を含む .frm ファイルがあります。サーバーは次の式を使用して、64K バイトの上限に対して、ファイルに格納されたいくつかのテーブル情報をチェックします。

if (info_length+(ulong) create_fields.elements*FCOMP+288+
    n_length+int_length+com_length > 65535L || int_count > 255)

.frm ファイルに格納された情報のうち式に対してチェックされる部分は 64K バイトの制限を超えることはできません。したがって、テーブル定義がこのサイズに達した場合、これ以上カラムを追加できません。

式の関連因子は次のとおりです。

  • info_length は、画面に必要な領域です。これは MySQL の Unireg から継承したものです。

  • create_fields.elements はカラム数です。

  • FCOMP は 17 です。

  • n_length は、名前あたり 1 バイトの区切り文字を含む、すべてのカラム名の合計長です。

  • int_length は、ENUM および SET カラムの値のリストに関連します。このコンテキストでは、int整数の意味ではありません。これは間隔を意味し、ENUM および SET カラムの総称です。

  • int_count は、一意の ENUM および SET 定義の数です。

  • com_length はカラムコメントの合計長です。

前述の式には、許可されるテーブル定義に対し複数の意味があります。

  • 長いカラム名を使用すると、ENUM または SET カラムを含めたり、カラムコメントを使用したりした場合と同様に、カラムの最大数が減ることがあります。

  • テーブルに保持できる一意の ENUM および SET 定義は 255 以下です。同一要素リストを持つカラムは、この制限に対して同じと見なされます。たとえば、次の 2 つのカラムがテーブルに含まれる場合、これらは定義が同一なので、この制限に対して (2 つではなく) 1 つと見なされます。

    e1 ENUM('a','b','c')
    e2 ENUM('a','b','c')
  • 一意の ENUM および SET 定義内の要素名の合計長は、64K バイトの制限に対して加えられるので、特定の ENUM カラムの要素の数に対する理論的な制限は 65,535 ですが、実際の限度は 3000 未満です。