wiki:Partitioning

Version 3 (modified by 185022, 3 weeks ago) ( diff )

--

Партиционирање

Партициски функции и шема

Поради тоа што encounters, medications, observations и procedures користат ист тип за колоната за датум - datetime2, тие може да користат иста функција - pf_Encounters_Year и иста партициска шема - ps_Encounters_Year.

Табелата conditions користи различен тип за датум - date, па за неа ќе се направи посебна партициска функција и шема.

pf_Encounters_Year и ps_Encounters_Year

Партициската функција - pf_Encounters_Year (datetime2) е креирана со boundaries: 2000, 2010, 2020, 2030.

Партициската шема ps_Encounters_Year ги мапира партициите на горните filegroups.

create partition function pf_Encounters_Year (datetime2)
as range right for values
(
    '2000-01-01',
    '2010-01-01',
    '2020-01-01',
    '2030-01-01'
);
go

create partition scheme ps_Encounters_Year
as partition pf_Encounters_Year to
(
    FG_Old,
    FG_2000s,
    FG_2010s,
    FG_2020s,
    FG_Future
);
go
  • range right значи дека граничната вредност припаѓа на десната (повисока) партиција.

pf_Conditions_Year и ps_Conditions_Year

create partition function pf_Conditions_Year (date)
as range right for values 
(
    '2000-01-01',
    '2010-01-01',
    '2020-01-01',
    '2030-01-01'
);
go

create partition scheme ps_Conditions_Year
as partition pf_Conditions_Year to
(
    FG_Old,
    FG_2000s,
    FG_2010s,
    FG_2020s,
    FG_Future
);
go

Clustered индекси со партиционирање

Партиционирањето реално се применува кога clustered индексот е креиран врз партициската шема.

Помалите табели како allergies и immunizations не се партиционирани затоа што се помали и не зависат од временски период.

encounters

create clustered index CI_Encounters_StartDate_Id
on encounters(start, Id)
with (drop_existing = off)
on ps_Encounters_Year(start);
go

observations

create clustered index CI_Observations_Date_Patient
on observations([date], patient)
with (drop_existing = off)
on ps_Encounters_Year([date]);
go

medications

create clustered index CI_Medications_Start
on medications([start], patient)
with (drop_existing = off)
on ps_Encounters_Year([start]);
go

procedures

create clustered index CI_Procedures_Start
on procedures([start], patient)
with(drop_existing = off)
on ps_Encounters_Year([start]);
go

conditions

create clustered index CI_Conditions_Start
on conditions([start], patient)
with (drop_existing = off)
on ps_Conditions_Year([start]);
go
Note: See TracWiki for help on using the wiki.