miksi joidenkin Oracle DB: n hakemistojen taso on nolla?

Yritin nähdä hakemistojen b-puutasot ja yllätyksekseni näen, että jotkut niistä on asetettu nolliksi.

SELECT index_name, blevel FROM user_indexes ORDER BY 2 desc; 

Heidän nimensä alkaa ”SYS _” (alla oleva kuva). Joten oletan, että ne ovat järjestelmän luomia hakemistoja? Ehkä ensisijaisista avaimista? Kummallakin tavalla olen utelias miksi ne ovat tyhjiä. Ymmärrän, onko arvo 0, mikä tarkoittaa, että kaikki on lehtisolmuissa, ja tietojen saaminen vie vain yhden hypyn ainutlaatuiseen skannaukseen.

kirjoita kuvan kuvaus tähän

kommentit

  • Ne näyttävät sys-skeema-objekteilta, joten voivat pelata omien sääntöjensä mukaan. Todennäköisin vastaus on kuitenkin, ettei niissä ole lainkaan solmuja.
  • Useiden tilastosarakkeiden (mukaan lukien taso) *_indexes -dokumenttien sanat " Sarakkeiden nimet, joita seuraa tähti, täytetään vain, jos keräät indeksin tilastoja ANALYZE-käskyn tai DBMS_STATS-paketin avulla. " Luulen, että moottori ei ' t suorita kumpaakaan näistä komennoista kaikkia tai kaikkia järjestelmätaulukoiden hakemistoja vastaan.
  • Nämä ovat lob-indeksit, se voi vain olla lob-indeksien ominaisuus. Voit yrittää kerätä ne, mutta en ole varma, mitä oraakeli tekisi sisäisesti.

Answer

Hakemistot, joiden nimen alku SYS_IL.. ovat LOB-hakemistoja.

BLEVEL on B-puuhakemistojen ominaisuus eikä järkevää LOB-hakemistoille.

Vaikka keräätkin tilastoja, BLEVEL tällaiselle indeksille jää tyhjäksi.

Vastaa

Kiitos @Balazs tiedoista.

Tutkin tätä ja näyttää siltä –

Lobi on yksinkertaisesti osoitin ja se osoittaa datan paloihin, jotka muodostavat kyseisen lohkon. Joten kun luot lob-sarakkeen, saat automaattisesti lob-indeksin, jotta lob-datan palat saadaan nopeammin ja segmentoidaan, joka pitää nämä datan palat.

Käytä seuraavia kyselyjä vahvistaaksesi saman –

SELECT index_name,INDEX_TYPE, blevel FROM user_indexes where blevel is null and index_name like "SYS_IL%%" ORDER BY 3 desc; 

Yhdistettyjen segmenttien tarkasteleminen –

select segment_name, segment_type, tablespace_name, bytes, max_extents from user_segments where segment_name in ( SELECT index_name FROM user_indexes where blevel is null and index_name like "SYS_IL%%" ); 

Voit poistaa tämän pudottamalla taulukon, jossa on lohkosarake tai itse sarake.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *