Changes between Initial Version and Version 1 of Partitioning


Ignore:
Timestamp:
02/08/26 16:19:53 (3 weeks ago)
Author:
185022
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Partitioning

    v1 v1  
     1= Партиционирање
     2
     3== Партициски функции и шема
     4
     5Поради тоа што `encounters`, `medications`, `observations` и `procedures` користат ист тип за колоната за датум - `datetime2`, тие може да користат иста функција - `pf_Encounters_Year` и иста партициска шема - `ps_Encounters_Year`.
     6
     7Табелата `conditions` користи различен тип за датум - `date`, па за неа ќе се направи посебна партициска функција и шема.
     8
     9=== `pf_Encounters_Year` и `ps_Encounters_Year`
     10
     11Партициската функција - `pf_Encounters_Year (datetime2)` е креирана со `boundaries: 2000, 2010, 2020, 2030`.
     12
     13Партициската шема `ps_Encounters_Year` ги мапира партициите на горните `filegroups`.
     14
     15{{{#!sql
     16create partition function pf_Encounters_Year (datetime2)
     17as range right for values
     18(
     19    '2000-01-01',
     20    '2010-01-01',
     21    '2020-01-01',
     22    '2030-01-01'
     23);
     24go
     25
     26create partition scheme ps_Encounters_Year
     27as partition pf_Encounters_Year to
     28(
     29    FG_Old,
     30    FG_2000s,
     31    FG_2010s,
     32    FG_2020s,
     33    FG_Future
     34);
     35go
     36}}}
     37
     38* `range right` значи дека граничната вредност припаѓа на десната (повисока) партиција.
     39
     40=== `pf_Conditions_Year` и `ps_Conditions_Year`
     41
     42{{{#!sql
     43create partition function pf_Conditions_Year (date)
     44as range right for values
     45(
     46    '2000-01-01',
     47    '2010-01-01',
     48    '2020-01-01',
     49    '2030-01-01'
     50);
     51go
     52
     53create partition scheme ps_Conditions_Year
     54as partition pf_Conditions_Year to
     55(
     56    FG_Old,
     57    FG_2000s,
     58    FG_2010s,
     59    FG_2020s,
     60    FG_Future
     61);
     62go
     63}}}
     64
     65== Clustered индекси со партиционирање
     66
     67Партиционирањето реално се применува кога clustered индексот е креиран врз партициската шема.
     68
     69Помалите табели како `allergies` и `immunizations` не се партиционирани затоа што се помали и не зависат од временски период.
     70
     71=== `encounters`
     72
     73{{{#!sql
     74create clustered index CI_Encounters_StartDate_Id
     75on encounters(start, Id)
     76with (drop_existing = off)
     77on ps_Encounters_Year(start);
     78go
     79}}}
     80
     81=== `observations`
     82
     83{{{#!sql
     84create clustered index CI_Observations_Date_Patient
     85on observations([date], patient)
     86with (drop_existing = off)
     87on ps_Encounters_Year([date]);
     88go
     89}}}
     90
     91=== `medications`
     92
     93{{{#!sql
     94create clustered index CI_Medications_Start
     95on medications([start], patient)
     96with (drop_existing = off)
     97on ps_Encounters_Year([start]);
     98go
     99}}}
     100
     101=== `procedures`
     102
     103{{{#!sql
     104create clustered index CI_Procedures_Start
     105on procedures([start], patient)
     106with(drop_existing = off)
     107on ps_Encounters_Year([start]);
     108go
     109}}}
     110
     111=== `conditions`
     112
     113{{{#!sql
     114create clustered index CI_Conditions_Start
     115on conditions([start], patient)
     116with (drop_existing = off)
     117on ps_Conditions_Year([start]);
     118go
     119}}}