Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.3.SQLSERVER2019
Indeksykolumnowe
SQLServer,takjakwieleserwerówbazdanych,przechowujedanewpostaciwier-
szyjedenlubwięcejwierszytabelijestzapisywanychw8-kilobajtowychjednost-
kachnazywanychstronami.Takierozwiązaniesprawdzasięwbazachoperacyjnych,któ-
rychużytkownicynabieżącowstawiają,modyfikują,usuwająlubodczytująpojedyncze
wiersze.Jednakwbazachanalitycznych,wktórychużytkownicyodczytującałetabele,
anastępniegrupująodczytanedaneiłącząjezdanymizinnychtabel,rozwiązanie
tojestmałowydajne.
Sposobemnaskrócenieczasuodczytaniacałejtabeliniejestjejpoindeksowa-
nie,aleskompresowaniejeżelidanezajmująmniejmiejsca(sązapisanenamniejszej
liczbiestron),ichodczytaniebędziewymagaćmniejoperacjiIOiwrezultaciebędzie
szybsze.Abyzmaksymalizowaćwydajność,współczynnikkompresjidanychpowinien
byćjaknajwiększy.
Walgorytmachkompresjibezstratnejwspółczynnikkompresjizależyprzedewszystkimod
kompresowanychdanychimbardziejróżnorodne,tymjestonniższy.Innymisłowy,
imwięcejjestpowtarzającychsięwartości,tymwyższywspółczynnikkompresjidanych.
Ponieważdanewkolumnachpowtarzająsięczęściejniżwwierszach(wkolumniePaństwowe
wszystkichwierszachmożewystępowaćwartośćPolska,aleszansażewkilkukolumnachtego
samegowiersza,naprzykładwkolumnachNazwisko,ImięiKrajwystąpiątesamewartości,jest
bliskazeru),toprzechowującnastronachkolumny,aniewiersze,zwiększamywspółczynnik
kompresji.
Ponadtoanalitycyrzadkoodczytująwszystkiekolumnytabeliznacznieczęściejinteresująich
tylkowybranezmienne.Zuwaginato,żejednostkąodczytudanychwserwerzeSQLServer
jeststrona(odczytywaneizapisywanestrony,aniewiersze,kolumnyczytabele)podziele-
niekolumnmiędzyróżnestronypozwalaodczytaćtylkote,naktórychznajdująsiępotrzebne
dane.
Działanieindeksówkolumnowychnajlepiejwyjaśnićnaprostymprzykładzie.Weźmykilka
wierszyprzykładowejtabelifaktów(tabeli,wktórejprzechowywanemiary,np.ilośćiwartość
sprzedaży)orazkluczewiążąceztabelamiwymiarów(np.zkalendarzem,tabelązawierającą
daneoproduktach,sklepachiregionach)(tab.1.1).
Wpierwszejkolejnościdanedzielonepoziomo,nablokiliczącemaksymalniemilionwier-
szykażdy;teblokinazywanegrupamiwierszy.Następniekażdagrupawierszyjestdzielona
pionowo,nawartościposzczególnychkolumn.Wrezultaciepowstająsegmentyzawierające
domilionawartościkażdy(tab.1.2).
33