Omvänt index
Databashanteringssystem tillhandahåller flera typer av index för att förbättra prestanda och dataintegritet över olika applikationer. Indextyper inkluderar b-träd , bitmappar och r-träd .
I databashanteringssystem vänder en strategi för omvänd nyckelindex om nyckelvärdet innan det skrivs in i indexet . Till exempel, värdet 24538 blir 83542 i indexet. Att vända nyckelvärdet är särskilt användbart för att indexera data som sekvensnummer , där varje nytt nyckelvärde är större än det tidigare värdet, dvs värdena ökar monotont. Omvända nyckelindex har blivit särskilt viktiga i system för bearbetning av transaktioner med stora volymer eftersom de minskar konflikten om indexblock .
Skapar data
Omvända nyckelindex använder b-trädstrukturer , men förbearbetar nyckelvärden innan de infogas. Förenklat placerar b-träd liknande värden på ett enda indexblock, t.ex. lagrar 24538 på samma block som 24539. Detta gör dem effektiva både för att leta upp ett specifikt värde och för att hitta värden inom ett område. Men om applikationen infogar värden i sekvens måste varje infogning ha tillgång till det senaste blocket i indexet för att kunna lägga till det nya värdet. Om många användare försöker infoga samtidigt måste de alla skriva till det blocket och måste komma i kö, vilket saktar ner applikationen. Detta är särskilt ett problem i klustrade databaser , som kan kräva att blocket kopieras från en dators minne till en annans för att tillåta nästa användare att utföra sin infogning.
Om du vänder om nyckeln sprids liknande nya värden över hela indexet istället för att koncentrera dem i ett lövblock. Detta betyder att 24538 visas på samma block som 14538 medan 24539 går till ett annat block, vilket eliminerar denna orsak till konflikten . (Eftersom 14538 skulle ha skapats långt före 24538, stör deras inlägg inte varandra.)
Frågar efter data
Omvända index är lika effektiva som oomvända index för att hitta specifika värden, även om de inte är användbara för intervallfrågor. Områdesfrågor är ovanliga för artificiella värden som sekvensnummer. När du söker i indexet vänder frågeprocessorn helt enkelt sökmålet innan du slår upp det.
Raderar data
Vanligtvis tar program bort data som är äldre i genomsnitt innan nyare data tas bort. Således går data med lägre sekvensnummer i allmänhet före de med högre värden. Allteftersom tiden går, i standard b-träd , kommer indexblock för lägre värden att innehålla få värden, med en motsvarande ökning av oanvänt utrymme, kallat "röta". Röta slösar inte bara med utrymme utan saktar ner frågehastigheten, eftersom en mindre del av ett ruttet indexblock ryms i minnet när som helst. I ett b-träd, om 14538 tas bort, förblir dess indexutrymme tomt. I ett omvänt index, om 14538 går före 24538 kommer, kan 24538 återanvända 14538:s utrymme. [ citat behövs ]
Se även
Fotnoter
externa länkar
- "Databasdesigntekniker" . docs.oracle.com . Hämtad 2019-04-13 .