Partycjonowanie tabeli w SQL Server 2005

Krótko na temat jak spartycjonować sobie tabele w Sql Serverze 2005.  Tabelkę którą będę partycjonował jest tabela z historią operacji, kolumną która posłuży mi do spartycjonowania tejże tabeli będzie data wykononia operacji. Operacje będą partycjonowane po latach.


Zaczynamy

Pierwszą rzeczą którą musimy zrobić jest utworzenie grup plików i plików partycji.

dla mojego przykładu utworzyłem następujące grupy plików i pliki.

OPER1996LOWER (operacje < 1996 rok)

OPER1996

OPER1997

OPER2011

OPER2012

OPER2012UPPER (operacje > 2012)

czyli łącznie 19 grup i plików

Grupy plików możemy sobie wy listować w następujący sposób :

SELECT name as [File Group Name]
FROM sys.filegroups
WHERE type = ‘FG’

Następną czynnością jest utworzenie funkcji partycji “partition function”

CREATE PARTITIO FUCTIO [OperatiosDateRagePF1](datetime) AS RAGE RIGHT FOR VALUES (‘1996-01-01′, ‘1997-01-01′, ‘1998-01-01′, ‘1999-01-01′, ‘2000-01-01′, ‘2001-01-01′, ‘2002-01-01′, ‘2003-01-01′, ‘2004-01-01′, ‘2005-01-01′, ‘2006-01-01′, ‘2007-01-01′, ‘2008-01-01′, ‘2009-01-01′, ‘2010-01-01′, ‘2011-01-01′, ‘2012-01-01′, ‘2013-01-01′)

Range RIGHT translation
Operacje data wykonania Partycja
< 1996-01-01 OPER1996LOWER
>=1996-01-01 and < 1997-01-01 OPER1996
>=1997-01-01 and < 1998-01-01 OPER1997
…… …….
>=2013-01-01 OPER2012UPPER

“Partition function” podpinamy pod “partition schema ” który tworzymy następującą komendą

CREATE PARTITION SCHEME [OperationsPartitionScheme] AS PARTITION [OperationsDateRangePF1] TO ([OPER1996LOWER], [OPER1996], [OPER1997], [OPER1998], [OPER1999], [OPER2000], [OPER2001], [OPER2002], [OPER2003], [OPER2004], [OPER2005], [OPER2006], [OPER2007], [OPER2008], [OPER2009], [OPER2010], [OPER2011], [OPER2012], [OPER2012UPPER])

Teraz pozostaje już tylko utworzenie tabelki i podpięcie jej do schematu partycji:

CREATE TABLE Operacje
(data_w datetime,
kwota decima(10,2))
ON OperationsPartitionScheme
(data_w);

Ok mamy spartycjonowaną tabelkę i możemy załadować do niej dane :)

Tags:

Leave a Reply