Partition Table (Criando Filegroup) – Parte#4

Fala galera, mesmo o Filegroups sendo o “final” do processo de criar a Partition Table pois é onde os dados serão armazenados de fato, vamos criá-los primeiro. Depois de criar os filegroups podemos voltar e criar o Partition Function e o Partition Schema.

Antes de criar o filegroup, vamos relembrar um pouco de conceito do SQL Server. Todos os dados de uma tabela são armazenados em um agrupador chamado Página que possui 8Kb de tamanho. Independente de uma página estar com apenas 1 registro, ou totalmente preenchida com dados, ela ocupa 8Kb de tamanho. Outra caracteristica é que dentro de uma página são armazenados somente dados de uma mesma tabela. Se neste exemplo abaixo existisse somente 1 funcionário e 1 produto, existiriam 2 páginas criadas. O conjunto de 8 páginas é chamado de Extent, que por sinal, tem 64Kb de tamanho (8Kb de cada uma das 8 páginas).

image

 

 

 

 

 

 

 

Mais pra frente vamos entender o porque é importante saber o tamanho de uma Página e de um Extent.

Os Databases são criados no filegroup Default, se não for especificado em qual filegroup deve ser criado. Por padrão, no SQL Server 2012, os filegroups são armazenados dentro da pasta \Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA com o nome do Database que você criou. Se você quiser especificar o filegroup na hora de criar seu Database, deve adicionar o código T-SQL junto à criação do seu Database. Veja abaixo a criação do dbMuseu_2 informando o filegroup via código T-SQL.

 1: CREATE DATABASE dbMuseu_2
 2: ON
 3: ( NAME = dbMuseu_2,
 4:     FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\dbMuseu_2.mdf',
 5:     SIZE = 10,
 6:     MAXSIZE = 50,
 7:     FILEGROWTH = 5 )
 8: LOG ON
 9: ( NAME = dbMuseu_log,
 10:     FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\dbMuseu_2_log.ldf',
 11:     SIZE = 5MB,
 12:     MAXSIZE = 25MB,
 13:     FILEGROWTH = 5MB ) ;
 14: GO

 

Esta criação do dbMuseu_2 é só para exemplificar como especificar o filegroup na hora da criação do Database, fique a vontade para excluir o dbMuseu_2, caso tenha criado.

Quando se cria mais de um filegroup por Database, os novos arquivos de filegroup possuem a extensão .NDF ao invés de .MDF. Também temos o arquivo .LDF que são os arquivos de LOG das transações que o Database processa.

image

Os Databases já criados, tanto o dbMuseu (criado na Parte#1) quanto o dbMuseu_2 criado acima, possuem apenas 1 Filegroup. Veja na imagem ao lado estes arquivos físicos.

 

Vamos criar agora outros filegroups para o dbMuseu (criado na Parte#1) para poder separar os dados da tabela tbVisitas e utilizar o propósito destes posts, o Partition Table!

Primeiro vamos adicionar o nome lógico dos Filegroups ao nosso Database. Como já temos o dbMuseu criado, vamos alterar o banco de dados ao invés de criar um novo. Veja o código T-SQL abaixo:

 1: USE MASTER
 2: GO
 3: 
 4: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_JAN]
 5: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_FEV]
 6: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_MAR]
 7: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_ABR]
 8: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_MAI]
 9: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_JUN]
 10: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_JUL]
 11: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_AGO]
 12: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_SET]
 13: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_OUT]
 14: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_NOV]
 15: ALTER DATABASE dbMuseu ADD FILEGROUP [FG2012_DEZ]
 16: GO

 

Para confirmar os nomes lógicos adicionados ao seu Database, você pode ir até as propriedades do banco, clicando com o botão direito em dbMuseu >> Properties, e então nas opções da esquerda, vá até Filegroups como na imagem abaixo, ou então através do código T-SQL:

 1: USE dbMuseu
 2: GO
 3: 
 4: sp_helpfilegroup
 5: GO

 

image

 

 

 

 

 

 

 

 

 

 

 

Pronto, os nomes lógicos estão criados, agora é o momento de criar os arquivos físicos e associá-los à esses nomes lógicos dos filegroups. Para isso, é necessário realizar outro código DDL de Alter Database, veja esse código abaixo:

 1: USE MASTER
 2: GO
 3: 
 4: ALTER DATABASE dbMuseu
 5: ADD FILE
 6: (NAME = 'FG2012_01_JAN'
 7: ,FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\FG2012_01_JAN.ndf')
 8: TO FILEGROUP [FG2012_01_JAN]
 9: GO

 

Neste código acima, criamos fisicamente o filegroup FG2012_01_JAN.NDF baseado no nome lógico criado anteriormente, e que receberá somente os dados de Janeiro/2012 quando particionarmos os dados.

Voltando para a pasta \Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA, podemos ver o arquivo físico já criado:

image

Devemos replicar esse ultimo código de Alter Table para todos os outros Filegroups que precisamos criar, isso é: Fevereiro, Março, Abril … até Dezembro.

Sempre lembrando de alterar a localização do arquivo, o nome e o nome do filegroup.

 

Para verificar que todos arquivos foram criados, outra alternativa é executar o código T-SQL abaixo:

 1: USE dbMuseu
 2: GO
 3: 
 4: sp_helpfile
 5: GO

 

Nos próximos posts, vamos criar o Partition Function e o Partition Schema.

Sobre Diego Nogare 346 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.