MySQL 8.0 リファレンスマニュアル


15.22 InnoDB の制限

このセクションでは、InnoDB ストレージエンジンの InnoDB テーブル、インデックス、テーブルスペース、およびその他の側面の制限について説明します。

  • テーブルには、最大 1017 カラムを含めることができます。 仮想生成カラムはこの制限に含まれます。

  • テーブルには、最大で 64 個のセカンダリインデックスを含めることができます。

  • DYNAMIC または COMPRESSED の行形式を使用する InnoDB テーブルでは、インデックスキーの接頭辞の長さの制限は 3072 バイトです。

    REDUNDANT または COMPACT の行形式を使用する InnoDB テーブルのインデックスキー接頭辞の長さ制限は 767 バイトです。 たとえば、utf8mb4 文字セットおよび各文字の最大 4 バイトを想定して、TEXT または VARCHAR カラムで 191 文字を超える column prefix インデックスを使用して、この制限に達する場合があります。

    制限を超えるインデックスキー接頭辞の長さを使用しようとすると、エラーが返されます。

    MySQL インスタンスの作成時に innodb_page_size オプションを指定して、InnoDBページサイズを 8K バイトまたは 4K バイトまで小さくすると、16K バイトのページサイズに対応する 3072 バイトの制限に基づいて、比例的にインデックスキーの最大長も短くなります。 つまり、インデックスキーの最大長は、ページサイズが 8K バイトのときは 1536 バイト、ページサイズが 4K バイトのときは 768 バイトになります。

    インデックスキー接頭辞に適用される制限は、フルカラムインデックスキーにも適用されます。

  • 複数カラムインデックスには最大 16 カラムを使用できます。 制限を超えると、エラーが返されます。

    ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed
  • オフページに格納されている可変長カラムを除く最大行サイズは、4K バイト、8K バイト、16K バイト、および 32K バイトのページサイズではページの半分よりわずかに小さくなります。 たとえば、デフォルトの innodb_page_size 16KB の最大行サイズは約 8000 バイトです。 ただし、64KB の InnoDB ページサイズの場合、最大行サイズは約 16000 バイトです。 LONGBLOB および LONGTEXT のカラムは 4GB 未満である必要があり、BLOB および TEXT のカラムを含む合計行サイズは 4GB 未満である必要があります。

    行の長さが 1 ページの半分より短い場合は、行全体がそのページ内にローカルに格納されます。 セクション15.11.2「ファイル領域管理」で説明したように、半ページを超える行では、その行が半ページ以内に収まるように、可変長カラムが外部オフページストレージの対象として選択されます。

  • InnoDB では内部的に 65,535 バイトを超える行サイズがサポートされますが、MySQL 自体では、すべてのカラムの合計サイズに 65,535 の行サイズ制限が課されます。 セクション8.4.7「テーブルカラム数と行サイズの制限」を参照してください。

  • 一部の古いオペレーティングシステムでは、ファイルは 2G バイトよりも小さくする必要があります。 これは InnoDB の制限ではありません。 大規模なシステムテーブルスペースが必要な場合は、1 つの大規模なデータファイルではなく複数の小規模なデータファイルを使用して構成するか、file-per-table および一般的なテーブルスペースデータファイルにテーブルデータを分散します。

  • InnoDB ログファイルの最大サイズの合計は 512GB です。

  • テーブルスペースの最小サイズは、10M バイトをわずかに超える大きさです。 テーブルスペースの最大サイズは、InnoDB のページサイズによって異なります。

    表 15.31 InnoDB テーブルスペースの最大サイズ

    InnoDB ページサイズ 最大テーブルスペースサイズ
    4KB 16TB
    8KB 32TB
    16KB 64TB
    32KB 128TB
    64KB 256TB

    最大テーブルスペースサイズは、テーブルの最大サイズでもあります。

  • ファイル名を含むテーブルスペースファイルのパスは、Windows での MAX_PATH 制限を超えることはできません。 Windows 10 より前では、MAX_PATH の制限は 260 文字です。 Windows 10 バージョン 1607 では、MAX_PATH の制限は共通の Win32 ファイルおよびディレクトリ機能から削除されていますが、新しい動作を有効にする必要があります。

  • 同時読取り /書込みトランザクションに関連する制限については、セクション15.6.6「undo ログ」 を参照してください。


関連キーワード:  InnoDB, テーブル, 制限, サイズ, インデックス, スペース, 構成, バイト, ページ, 最大