Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Macht eine inkrementierte Spalte den B-Tree-Index für die Spalte unausgeglichen?

Oracle Die Indizes von sind niemals "unausgeglichen":Jedes Blatt im Index hat die gleiche Tiefe wie jedes andere Blatt.

Keine Seitenteilung führt von selbst eine neue Ebene ein:Eine Blattseite wird nicht zu einer übergeordneten Seite für neue Seiten, wie dies bei einem nicht selbstausgleichenden Baum der Fall wäre.

Stattdessen wird ein gleichgeordnetes Element für die geteilte Seite erstellt, und der neue Datensatz (plus möglicherweise einige der Datensätze der alten Seite) wird auf die neue Seite verschoben. Ein Zeiger auf die neue Seite wird der übergeordneten Seite hinzugefügt.

Wenn die übergeordnete Seite auch keinen Platz mehr hat (kann den Zeiger auf die neu erstellte Blattseite nicht akzeptieren), wird sie ebenfalls geteilt und so weiter.

Diese Aufteilungen können sich bis zur Stammseite ausbreiten, deren Aufteilung das einzige ist, was die Indextiefe erhöht (und dies für alle Seiten gleichzeitig tut).

Indexseiten sind zusätzlich in doppelt verknüpften Listen organisiert, jede Liste auf einer eigenen Ebene. Dies wäre unmöglich, wenn der Baum unausgeglichen wäre.

Wenn master_id automatisch inkrementiert wird, bedeutet dies, dass alle Teilungen am Ende erfolgen (so genannter 90/10 Splits), wodurch der Index so dicht wie möglich wird.

Nein, aus den oben genannten Gründen nicht.

Wenn Sie slave beitreten zu master oft ziehen Sie es in Betracht, einen CLUSTER zu erstellen der beiden Tabellen, indiziert durch master_id . Das bedeutet, dass die Datensätze aus beiden Tabellen die gleiche master_id teilen , gehen Sie zu denselben oder nahe gelegenen Datenseiten, wodurch eine Verbindung zwischen ihnen sehr schnell hergestellt wird.

Wenn die Engine einen Datensatz von master gefunden hat , mit einem Index oder was auch immer, bedeutet dies auch, dass es bereits die Datensätze von slave gefunden hat um mit diesem master verbunden zu werden . Und umgekehrt, einen slave lokalisieren bedeutet auch, seinen master zu lokalisieren .