Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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