Oracle
のインデックスが「不均衡」になることはありません。インデックス内のすべてのリーフは、他のリーフと同じ深さにあります。
ページ分割がそれ自体で新しいレベルを導入することはありません。リーフページは、非自己平衡ツリーの場合のように、新しいページの親にはなりません。
代わりに、分割ページの兄弟が作成され、新しいレコード(および場合によっては古いページのレコードの一部)が新しいページに移動します。新しいページへのポインタが親に追加されます。
親ページもスペースが不足している場合(新しく作成されたリーフページへのポインタを受け入れることができない場合)、同様に分割されます。
これらの分割はルートページまで伝播できます。ルートページの分割は、インデックスの深さを増やす唯一のものです(そして、すべてのページに対して一度にそれを行います)。
インデックスページはさらに二重リンクリストに編成され、各リストは独自のレベルにあります。ツリーのバランスが崩れていると、これは不可能です。
master_id
の場合 は自動インクリメントされます。これは、すべての分割が最後に発生することを意味します(90/10
と呼ばれます)。 分割)これにより、最も密度の高いインデックスが可能になります。
いいえ、上記の理由により、そうではありません。
slave
に参加する場合 master
へ 多くの場合、CLUSTER
の作成を検討できます。 master_id
でインデックス付けされた2つのテーブルの 。これは、同じmaster_id
を共有する両方のテーブルのレコードを意味します 、同じまたは近くのデータページに移動すると、それらの間の結合が非常に高速になります。
エンジンがmaster
からレコードを見つけたとき 、インデックスなどを使用すると、これは、slave
からのレコードがすでに検出されていることも意味します。 そのmaster
と結合する 。逆に、slave
を見つける master
を見つけることも意味します 。