このセクションでは、InnoDB テーブルの DYNAMIC
および COMPRESSED
行フォーマットについて説明します。これらの種類のテーブルは、innodb_file_format
構成オプションが Barracuda
に設定されている場合にのみ作成できます。(Barracuda ファイル形式では、COMPACT
および REDUNDANT
行フォーマットも許可されます。)
テーブルが ROW_FORMAT=DYNAMIC
または ROW_FORMAT=COMPRESSED
で作成された場合、長いカラム値は完全にオフページに格納され、クラスタ化されたインデックスレコードにはオーバーフローページへの 20 バイトのポインタのみが含まれます。
カラムがオフページに格納されるかどうかは、ページサイズおよび行の合計サイズによって異なります。その行が長すぎる場合は、クラスタ化されたインデックスレコードが B ツリーページに収まるまで、InnoDB はオフページストレージのもっとも長いカラムを選択します。40 バイト以下の TEXT
および BLOB
カラムは、常にインラインに格納されます。
DYNAMIC
行フォーマットは、(COMPACT
および REDUNDANT
フォーマットと同様に) 収まる場合は行全体をインデックスノード内に格納する効率性を維持しますが、この新しいフォーマットでは、長いカラムの多数のデータバイトで B ツリーノードがいっぱいになる問題が回避されます。DYNAMIC
フォーマットは、長いデータ値の一部がオフページに格納される場合は通常、すべての値をオフページに格納するのがもっとも効率的であるという考え方に基づいています。DYNAMIC
フォーマットでは、短いカラムは B ツリーノード内に残る可能性があるため、特定の行に必要なオーバーフローページの数が最小限に抑えられます。
COMPRESSED
行フォーマットは、オフページストレージに関して DYNAMIC
行フォーマットと同様の内部の詳細を使用するほか、追加のストレージ、圧縮されるテーブルおよびインデックスデータからのパフォーマンスの考慮事項、および小さいページサイズを使用します。COMPRESSED
行フォーマットでは、オプション KEY_BLOCK_SIZE
によって、クラスタ化されたインデックスに格納されるカラムデータの量、およびオーバーフローページに配置される量が制御されます。COMPRESSED
行フォーマットの詳細は、セクション14.7「InnoDB 圧縮テーブル」を参照してください。