sql >> Database >  >> RDS >> Oracle

maakt een verhoogde kolom de b-tree-index op de kolom onevenwichtig?

Oracle 's indexen zijn nooit "onevenwichtig":elk blad in de index is op dezelfde diepte als elk ander blad.

Geen enkele pagina-splitsing introduceert op zichzelf een nieuw niveau:een bladpagina wordt geen ouder voor nieuwe pagina's zoals het zou zijn op een niet-zelfbalancerende boom.

In plaats daarvan wordt een broer of zus voor de gesplitste pagina gemaakt en gaat het nieuwe record (plus mogelijk enkele records van de oude pagina) naar de nieuwe pagina. Er wordt een verwijzing naar de nieuwe pagina toegevoegd aan de bovenliggende pagina.

Als de bovenliggende pagina ook geen ruimte meer heeft (kan de aanwijzer naar de nieuw gemaakte bladpagina niet accepteren), wordt deze ook gesplitst, enzovoort.

Deze splitsingen kunnen zich voortplanten tot aan de hoofdpagina, waarvan de splitsing het enige is dat de indexdiepte vergroot (en dit voor alle pagina's tegelijk doet).

Indexpagina's zijn bovendien georganiseerd in dubbel gelinkte lijsten, elke lijst op zijn eigen niveau. Dit zou onmogelijk zijn als de boom uit balans zou zijn.

Als master_id wordt automatisch verhoogd, dit betekent dat alle splitsingen aan het einde plaatsvinden (zogenaamde 90/10 splits) wat de meest dichte index mogelijk maakt.

Nee, dat zou het niet zijn, om de bovenstaande redenen.

Als je lid wordt van slave naar master vaak kunt u overwegen een CLUSTER . te maken van de twee tabellen, geïndexeerd door master_id . Dit betekent dat de records van beide tabellen, dezelfde master_id . delen , ga naar dezelfde of nabijgelegen gegevenspagina's, waardoor ze zeer snel worden samengevoegd.

Toen de engine een record vond van master , met een index of wat dan ook, betekent dit ook dat het de records van slave al heeft gevonden om te worden samengevoegd met die master . En vice versa, het lokaliseren van een slave betekent ook het lokaliseren van de master .



  1. JSON toont fout 403 tijdens het ophalen van gegevens uit de database in Android

  2. PHP gebruiken om afbeeldingen naar een map te uploaden terwijl beschrijvingen in een database worden opgeslagen

  3. Oracle Database Security:Database Auditing

  4. MYSQL Tabel maken met standaardwaarde (expressie) naar een kolom