No post anterior, prometi a sintaxe para criar uma tabela particionada…
Então vamos lá! Primeiro, vamos criar um Banco de Dados com um Filegroup Primário (no disco F:), um Filegroup Secundário com nome dbTestePart_FG1 (nos discos G:, H: e I:) e os arquivos de log no disco J:.
Os arquivos do Filegroup dbTestePart_FG1 são criados com 1 MB e crescem em incrementos de 1 MB (com um máximo de 50 MB), conforme podemos verificar na sitaxe utilizada para criar este Banco de Dados:
USE master; GO
CREATE DATABASE dbTestePart ON PRIMARY ( NAME='dbTestePart_Primario', FILENAME= 'F:\dbTestePart_Primario.mdf', SIZE=10MB, MAXSIZE=50MB, FILEGROWTH=1MB), FILEGROUP dbTestePart_FG1 ( NAME='dbTestePart_FG1_Dat1', FILENAME = 'G:\dbTestePart_FG1_Dat1.ndf', SIZE=1MB, MAXSIZE=50MB, FILEGROWTH=1MB), ( NAME='dbTestePart_FG1_Dat2', FILENAME = 'H:\dbTestePart_FG1_Dat2.ndf', SIZE=1MB, MAXSIZE=50MB, FILEGROWTH=1MB), ( NAME='dbTestePart_FG1_Dat3', FILENAME = 'I:\dbTestePart_FG1_Dat3.ndf', SIZE=1MB, MAXSIZE=50MB, FILEGROWTH=1MB) LOG ON ( NAME='dbTestePart_Log', FILENAME = 'J:\dbTestePart.ldf', SIZE=1MB, MAXSIZE=10MB, FILEGROWTH=1MB); GO
Podemos definir o Filegroup dbTestePart_FG1 como default com o comando:
ALTER DATABASE dbTestePart MODIFY FILEGROUP dbTestePart_FG1 DEFAULT; GO
Agora, vamos criar uma tabela no novo Filegroup. A sintaxe é:
USE dbTestePart; CREATE TABLE TabelaPart ( Coluna1 int PRIMARY KEY, Coluna2 char(1024), Coluna3 char(1024)) ON dbTestePart_FG1; GO
Verificando os discos utilizados, podemos conferir o tamanho dos arquivos criados:
Cada linha desta coluna ocupa cerca de 2 KB (temos 2 campos de 1024 bytes). Quando adicionamos registros na tabela, as informações são escritas nos 3 discos do Filegroup.
Agora vejamos o que acontece se criarmos 2.000 registros nesta tabela, usando os seguintes comandos:
DECLARE @nContador int; SET @nContador = 1;
USE dbTestePart
WHILE (@nContador < 2000) BEGIN; INSERT INTO TabelaPart VALUES (@nContador,'TEXTO', 'TEXTO'); SET @nContador = @nContador + 1; END; GO
Os 2.000 novos registros ocupam cerca de 4 MB. Em cada arquivo do Filegroup temos originalmente 1 MB, então os arquivos precisarão "crescer" para acomodar todos os registros.
De fato, após executar o comando, podemos notar que cada arquivo possui 2 MB! (porque o incremento é de 1 MB por vez).
Repare que somente os arquivos nos quais a tabela é armazenada precisaram crescer.
(continua)