ceturtdiena, 2012. gada 10. maijs

Tabulas datu sadalījums pa failu grupām

SQL Server tabulu dati glabājas failos, kas pieder failu grupām. Pēc noklusējuma ir tikai viena failu grupa ar nosaukumu "PRIMARY". Šādā gadījumā ir pilnīgi skaidrs, kur atrodas tabulas dati. Tomēr ja tiek izmantotas vairākas failu grupas, tad tabulas dati var atrasties arī vairākās failu grupā.

Piemēram, tabulas dati var tikt glabāti vienā failu grupā (=klasterētais indeks), bet indeksu dati (=parastie indeksi)- citā failu grupā. Citā gadījumā- tabula var būt particionēta (dalīta) un tabulas dati var būt sadalīti pa daudzām failu grupām. Jau iepriekš esmu rakstījis par šo tēmu- Faili un failu grupas SQL Server un vēl citos rakstos.

Lai nu kā, vajadzības dzīts uzrakstīju (manuprāt) glītu vaicājumu, kas parāda tabulas, to indeksus un kurā vietā atrodas atbilstoši dati. vēl vairāk- cik rindu glabājas kurā failu grupā:
-- Tabulas, to indeksi, tā tips, atrašanās vieta un rindu skaits!
-- ja dalītā (partitioned) tabula, tad rāda attiecīgo sadalījumu pa failu grupām
-- un rindu skaitu tajās
Select sc.Name SchemaName, o.name TableName, i.name IndexName,
    i.Type_Desc IndexType, d.type_desc RowsOrLOBOrSchema, d.name FileGroupOrSchemaName, dds.name FileGroupName, p.rows
From sys.indexes i
    Left Join sys.data_spaces d On i.data_space_id = d.data_space_id
    Left Join sys.all_objects o On i.object_id = o.object_id 
    Left Join sys.schemas sc On o.schema_id = sc.schema_id
    Left Join sys.destination_data_spaces ds on d.data_space_id = ds.partition_scheme_id
    Left Join sys.data_spaces dds On ds.data_space_id = dds.data_space_id
    Left Join sys.partitions p on i.object_id = p.object_id and i.index_id = p.index_id
        and Case When d.Type = 'PS' Then ds.destination_id Else 1 End = p.partition_number
Where 
    o.type = 'U' -- USER_TABLE
Order By sc.Name, o.Name, i.Type_Desc
Starp citu, priekš dalītajām (particionētajām) tabulām biju izveidojis šādu vaicājum- CV lai apskatītu dalītos (partitioned) objektus.

Nav komentāru:

Komentāra publicēšana