SQL Passo-a-Passo – Passo 5 (Filegroups e Tabelas Particionadas na prática)
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
Criando uma tabela no Filegroup
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
Conferindo os Discos
Verificando os discos utilizados, podemos conferir o tamanho dos arquivos criados:
Populando a Tabela
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)
Comments
- Anonymous
January 01, 2003
PingBack from http://blogs.technet.com/lpalma/archive/2009/04/02/sql-passo-a-passo-passo-4-filegroups-e-tabelas-particionadas.aspx