MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
このセクションでは、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 ログ」 を参照してください。