piektdiena, 2011. gada 14. janvāris

Dalīti (partitioned) indeksi

Šajā rakstā ir vienuviet apvienotas tās atšķirības, kas būtu jāņem vērā gadījumos, kad datu bāzē tiek veidotas dalītās (partitioned) tabulas un indeksi. Norādītas lietas, kas nav pieminētas rakstu sērijā- Indeksi (pamati). Rakstu var uztvert kā turpinājumu rakstam Tabulu horizontālā dalīšana (Partitioned Tables).

Atšķirības datu glabāšanā
Patiesībā jau nekas ļoti nemainās. Atšķirība ir tikai tā, ka ja parastā gadījumā tabulas dati glabājas kopā, tad dalītās tabulas gadījumā dati tiek sadalīti vairākās daļās.
Iedomājoties klasterētā indeksa koku (Tabulas ar klusterētu (clustered) indeksu), dalītu (partitioned) tabulu gadījumā veido vairākus kokus- katrai fiziskai tabulas daļai (partition) savs koks.

Dalītā (partitioned) indeksa  izveide
Tālākajās rindkopās atšķirības no raksta Indeksu izveide.
Veidojot indeksu no SSMS,Uzmanība jāpievērš sadaļai "Storage". Lai izveidotu dalīto indeksu, ir jāizvēlas "Partition scheme"- tātad shēma, kā dalīt indeksu daļās.
Veidojot indeksu ar skriptu palīdzību, pēc noklusējuma indeks tiek veidots tādā pašā veidā, kā tabula, uz kuras tas tiek veidots. Respektīvi- ja tabula ir dalīta, arī indekss būs dalīts.
Piemēram, (no raksta Tabulu horizontālā dalīšana (Partitioned Tables)) lai izveidotu dalīto indeksu jāizpilda skripts:
create Index IX_teksts On dbo.Test
(
    teksts
)
Alternatīva šim variantam būtu norādīt shēmu, kā dalīt indeksu (konkrētajā piemērā rezultāts būs identisks iepriekšējam skriptam):
create Index IX_teksts On dbo.Test
(
    teksts
)
On MyTestRangeScheme(gads)
Savukārt, lai izveidotu indeksu, kas netiek dalīts daļās būtu jāizpilda, piemēram, skripts:
create Index IX_teksts On dbo.Test
(
    teksts
)
On [Primary]
Indeksēti (materializēti) skati
Nākamajā rindkopā norādīts, kā izveidot dalītu (partitioned) skatu- atšķirība no raksta Indeksēti (materializētie) skati.
Parasts skats par materializētu skatu paliek brīdī, kad tam tiek izveidots klasterētais indekss. Ja mēs indeksam norādām shēmu, kā dalīt datus daļās, iegūstam dalītu (partitioned) indeksētu skatu!

Infromācijas par dalītajiem (partitioned) indeksiem apskatīšana
Tālākajās rindkopās norādītas atšķirības no raksta Informācijas par indeksiem apskatīšana.
Tā kā dalītais indekss sastāv no vairākām daļām, tad ir atšķirība tajā, kā tiek attēlota infromācija par indeksu. No SSMS apskatot informāciju par dalīto indeksu tiek attēlota informācija tikai par pirmo indeksa daļu (partition).
Strādājot ar DMV skatiem un funkcijām, tiek parādīta informācija par katru no indeksa daļām (partitions).

Indeksu pārbūve
Tālākajās rindkopās atšķirības no raksta- Indeksu apkope.
Dalīto indeksu gadījumā indeksa pārbūvei var norādīt indeksa daļu, kuru pārbūvēt. Respektīvi- ja mums indekss ir sadalīts 10 daļās (partitions), tad 9 no šīm daļām var būt lieliskā stāvoklī, bet viena- ar augstu fragmentācijas līmeni.
Rakstā tas nav ņemts vērā, un dalīto indeksu gadījumā šis skripts var veikt daudz liekas darbības- ja 9 no 10 daļām būs ideālā stāvoklī, bet viena sliktā, tad minētais skripts pārbūvēs visu indeksu (kas patiesībā nemaz nav vajadzīgs un reizēm var būt stipri lieki). Savukārt ja indeksā 6 no 10 būs sliktā stāvoklī, tad viss indekss tiks pārbūvēts pat 6 reizes, kas atkal ir gaužām lieki.

Nav komentāru:

Komentāra publicēšana