SQL Passo-a-Passo – Passo 5 (Continuação)
No post anterior criamos uma tabela num Filegroup “distribuído” em 3 discos.
Agora vamos fazer diferente! Vamos criar diversos Filegroups, e armazenar os dados em Filegroups diferentes, de acordo com os valores contidos em uma coluna.
Criando os Filegroups
Primeiro, vamos criar os 3 Filegroups, em 3 discos distintos:
USE master
ALTER DATABASE dbTestePart
ADD FILEGROUP dbTestePart_FG2
GO
ALTER DATABASE dbTestePart
ADD FILE
( NAME = dbTstePart_FG2_Dat,
FILENAME =
'G:\dbTestePart_FG2_Dat.ndf',
SIZE=1MB,
MAXSIZE=50MB,
FILEGROWTH=1MB )
TO FILEGROUP dbTestePart_FG2;
GO
ALTER DATABASE dbTestePart
ADD FILEGROUP dbTestePart_FG3
GO
ALTER DATABASE dbTestePart
ADD FILE
( NAME = dbTstePart_FG3_Dat,
FILENAME =
'H:\dbTestePart_FG3_Dat.ndf',
SIZE=1MB,
MAXSIZE=50MB,
FILEGROWTH=1MB )
TO FILEGROUP dbTestePart_FG3;
GO
ALTER DATABASE dbTestePart
ADD FILEGROUP dbTestePart_FG4
GO
ALTER DATABASE dbTestePart
ADD FILE
( NAME = dbTstePart_FG4_Dat,
FILENAME =
'I:\dbTestePart_FG4_Dat.ndf',
SIZE=1MB,
MAXSIZE=50MB,
FILEGROWTH=1MB )
TO FILEGROUP dbTestePart_FG4;
GO
A Partition Function
Agora, vamos criar uma PARTITION FUNCTION, que serve para definir "limites" para a próxima estrutura que discutiremos, a PARTITION SCHEME.
USE dbTestePart;
CREATE PARTITION FUNCTION
partFuncPorIdade (int)
AS RANGE LEFT
FOR VALUES (18, 60)
GO
De acordo com esta função, pessoas até 18 anos pertencerão a uma primeira faixa, pessoas de 19 a 60 anos pertencerão à segunda faixa, e pessoas com mais de 60 anos pertencerão à terceira faixa.
A Partition Scheme
Agora vamos criar a PARTITION SCHEME. É através desta estrutura que definimos em que Filegroup os registros serão armazenados, de acordo com a idade e com base na PARTITION FUNCTION.
A sintaxe é:
USE dbTestePart;
CREATE PARTITION SCHEME partSchemePorIdade
AS PARTITION partFuncPorIdade
TO (dbTestePart_FG2, dbTestePart_FG3, dbTestePart_FG4)
GO
Criando a Tabela
Finalmente, podemos criar a tabela que será armazenada nos 3 Filegroups de acordo com a idade das pessoas!
USE dbTestePart;
CREATE TABLE Pessoas
( IdPessoa int,
Nome char(50),
Sobrenome char(50),
Buffer char(2000),
Idade int )
ON partSchemePorIdade(Idade);
GO
Olhando novamente para os 3 discos, verificamos que cada um deles tem um novo arquivo de 1 MB:
Populando a Tabela
Agora, vamos inserir 2.000 registros com pessoas de 25 anos:
DECLARE @nContador int;
SET @nContador = 1;
USE dbTestePart
WHILE (@nContador < 2000)
BEGIN;
INSERT INTO Pessoas VALUES
(@nContador,'Nome','Sobrenome','Nonono',25);
SET @nContador = @nContador + 1;
END;
GO
E vamos analisar novamente os discos:
Note que somente o arquivo do disco H: cresceu, pois ele que contém o Filegroup dbTestePart_FG3, onde são armazenadas as pessoas com idade entre 19 e 60 anos!
De novo o post ficou comprido... mas foi divertido, não? :)
Comments
Anonymous
January 01, 2003
PingBack from http://blogs.technet.com/lpalma/archive/2009/04/16/sql-passo-a-passo-passo-5-filegroups-e-tabelas-particionadas-na-pr-tica.aspxAnonymous
October 30, 2009
The comment has been removed