Partition Table (Criando Partition Function) – Parte#5

Fala galera, logo depois de criar os filegroups e distribuir entre os discos existentes, é hora de criar o Partition Function que sustentará os algoritmos que farão a quebra dos dados.

Quando se cria o partition function, é necessário definir os limites condicionais dos períodos. O primeiro ponto que precisa ter atenção é exatamente essa criação dos limites (boundary) informando se o período (range) terá como base de criação os dados do esquerdo (left) ou do lado direito (right), IMPORTANTE ressaltar que o boundary utilizado força que o valor informado será utilizado naquele range do contexto. Para exemplificar, vamos criar uma partição que teria os dados anteriores a 30/junho/2012 em uma partição e a partir de 01/julho2012 em outra.

image

Para usar o boundary left, a quebra deve usar os dados à esquerda da condição, incluindo-a. Uma outra forma de dizer, é que os dados ficariam em <= 2012-06-30

Veja o código abaixo como ficaria essa partition function com left.

 1: CREATE PARTITION FUNCTION QuebraPelaEsquerda(date)
 2: AS
 3: RANGE LEFT FOR VALUES ('20120630')

Para usar o boundary right a quebra será a direita da condição, com a condição informada entrando na quebra, outra leitura para isso seria >= 2012-07-01

Veja o código abaixo como ficaria essa partition function com right.

 1: CREATE PARTITION FUNCTION QuebraPelaDireita(date)
 2: AS
 3: RANGE RIGHT FOR VALUES ('20120701')

 

Voltando ao cenário do museu, que estamos utilizando durante toda essa série de artigos, vamos criar os partition functions baseados nos 12 meses de 2012. Vou escrever o código para boundary right, mas fique a vontade para escrever com o left, para estudar. Lembrando que para usar o left, ao invés de informar o primeiro dia de cada mês, você deve informar o ultimo dia do mês anterior.

 1: USE dbMuseu
 2: GO
 3: 
 4: CREATE PARTITION FUNCTION MuseuPorMes(date)
 5: AS
 6: RANGE RIGHT FOR VALUES ('20120101', '20120201', '20120301',
 7:                         '20120401', '20120501', '20120601',
 8:                         '20120701', '20120801', '20120901',
 9:                         '20121001', '20121101', '20121201')

 

Criamos 12 partition functions informando qual é a data inicial de cada uma delas dentro do dbMuseu, isso significa que os dados anteriores a 01/Janeiro/2012 estão armazenados em 1 partição unica, contendo os dados desde quando começaram a ser inseridos até o dia 31/12/2011. Outro ponto importante a ser lembrado é que os dados acima de 01/12/2012 estão todos em uma mesma partição, visto que não existe uma próxima partição que encerra o range deste grupo iniciado em 1º de Dezembro.

No próximo post da série, finalmente será criado o partition scheme…

Sobre Diego Nogare 344 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.