空間インデックスを除き、InnoDB
インデックスは B-tree データ構造です。 空間インデックスでは、多次元データのインデックス付けに特化したデータ構造である R-trees を使用します。 インデックスレコードは、B ツリーまたは R ツリーデータ構造のリーフページに格納されます。 インデックスページのデフォルトサイズは 16K バイトです。
新しいレコードが InnoDB
clustered index に挿入されると、InnoDB
は将来のインデックスレコードの挿入および更新のために 1/16 のページを解放しようとします。 インデックスレコードが順次 (昇順または降順) に挿入されると、インデックスページの約 15/16 までがいっぱいになります。 レコードがランダムに挿入された場合は、ページの 1/2 から 15/16 までがいっぱいになります。
InnoDB
では、B ツリーインデックスの作成または再構築時にバルクロードが実行されます。 このインデックス作成方法は、ソートされたインデックス作成と呼ばれます。 innodb_fill_factor
構成オプションは、ソートされたインデックスの作成時に入力される各 B ツリーページの領域の割合を定義します。残りの領域は、将来のインデックスの増加のために予約されています。 ソートされたインデックス構築は、空間インデックスではサポートされていません。 詳細は、セクション15.6.2.3「ソートされたインデックス構築」を参照してください。 innodb_fill_factor
を 100 に設定すると、クラスタ化されたインデックスページの領域の 1/16 は将来のインデックスの増加に備えて解放されます。
InnoDB
インデックスページの塗りつぶし係数が MERGE_THRESHOLD
の下にドロップされた場合 (指定されていない場合、デフォルトで 50%)、InnoDB
はインデックスツリーを縮小してページを解放しようとします。 MERGE_THRESHOLD
設定は、B ツリーインデックスと R ツリーインデックスの両方に適用されます。 詳細は、セクション15.8.11「インデックスページのマージしきい値の構成」を参照してください。
MySQL インスタンスを初期化する前に innodb_page_size
構成オプションを設定することで、MySQL インスタンスのすべての InnoDB
テーブルスペースに対して page size を定義できます。 インスタンスのページサイズを定義した後は、インスタンスを再初期化しないと変更できません。 サポートされているサイズは、64KB、32KB、16KB (デフォルト)、8KB および 4KB です。
特定の InnoDB
ページサイズを使用している MySQL インスタンスは、別のページサイズを使用するインスタンスのデータファイルやログファイルを使用できません。