Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.3.SQLSERVER2019
Indeksykolumnowe
SQLServer,takjakwieleserwerówbazdanych,przechowujedanewpostaciwier-
szy–jedenlubwię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,aleskompresowanie–jeżelidanezajmująmniejmiejsca(sązapisanenamniejszej
liczbiestron),ichodczytaniebędziewymagaćmniejoperacjiIOiwrezultaciebędzie
szybsze.Abyzmaksymalizowaćwydajność,współczynnikkompresjidanychpowinien
byćjaknajwiększy.
Walgorytmachkompresjibezstratnejwspółczynnikkompresjizależyprzedewszystkimod
kompresowanychdanych–imbardziejsąróż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ąwszystkiekolumnytabeli–znacznieczęściejinteresująich
tylkowybranezmienne.Zuwaginato,żejednostkąodczytudanychwserwerzeSQLServer
jeststrona(odczytywaneizapisywanesąstrony,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órejsąprzechowywanemiary,np.ilośćiwartość
sprzedaży)orazkluczewiążącejąztabelamiwymiarów(np.zkalendarzem,tabelązawierającą
daneoproduktach,sklepachiregionach)(tab.1.1).
Wpierwszejkolejnościdanesądzielonepoziomo,nablokiliczącemaksymalniemilionwier-
szykażdy;teblokisąnazywanegrupamiwierszy.Następniekażdagrupawierszyjestdzielona
pionowo,nawartościposzczególnychkolumn.Wrezultaciepowstająsegmentyzawierające
domilionawartościkażdy(tab.1.2).
33