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: SQL Server 2005