Os particionamentos de arquivos podem ser bastante úteis para banco de dados que podem ter um crescimento exagerado e para aliviar HDs com um nível de IO de disco exagerado. Vamos ver um exemplo prático desta implementação:
Primeiro vamos criar um banco para comportar o nosso exemplo:
Create database MeuBanco
go
use MeuBanco
go
Agora vamos criar os filegroups que receberão os arquivos das partições:
ALTER DATABASE MeuBanco
ADD FILEGROUP GrupoArquivo1
GO
ALTER DATABASE MeuBanco
ADD FILE
(
NAME = 'GrupoArquivo1.ndf',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\GrupoArquivo1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP GrupoArquivo1
go
ALTER DATABASE MeuBanco
ADD FILEGROUP GrupoArquivo2
GO
ALTER DATABASE MeuBanco
ADD FILE
(
NAME = 'GrupoArquivo2.ndf',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\GrupoArquivo2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP GrupoArquivo2
go
ALTER DATABASE MeuBanco
ADD FILEGROUP GrupoArquivo3
GO
ALTER DATABASE MeuBanco
ADD FILE
(
NAME = 'GrupoArquivo3.ndf',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\GrupoArquivo3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP GrupoArquivo3
go
ALTER DATABASE MeuBanco
ADD FILEGROUP GrupoArquivo4
GO
ALTER DATABASE MeuBanco
ADD FILE
(
NAME = 'GrupoArquivo4.ndf',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\GrupoArquivo4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP GrupoArquivo4
go
Agora criaremos as funções de particionamento de valores. Nossa tabela de exemplo TabelaTesteParticao, terá duas colunas: Col1 que será um inteiro e Col2 que será um char de 10. Os particionamentos serão determinados pelos valores da coluna col1, que podem ser nos ranges:
- Menor ou igual a 1
- Entre 1 e 100
- Entre 101 e 1000
- Maior que 1000
Criando as função de range:
CREATE PARTITION FUNCTION FuncaoFaixaValor (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000) ;
GO
Criando o schema de partição:
CREATE PARTITION SCHEME ParticaoFaixaValor
AS PARTITION FuncaoFaixaValor
TO (GrupoArquivo1, GrupoArquivo2, GrupoArquivo3, GrupoArquivo4) ;
GO
Criando a nossa tabela de exemplo:
CREATE TABLE TabelaTesteParticao(col1 int, col2 char(10))
ON ParticaoFaixaValor (col1) ;
GO
Inserindo os valores de exemplo:
insert into TabelaTesteParticao(col1,col2) values (1,'P. 1')
insert into TabelaTesteParticao(col1,col2) values (2,'P. 2')
insert into TabelaTesteParticao(col1,col2) values (101,'P. 3')
insert into TabelaTesteParticao(col1,col2) values (1001,'P. 4')
O acesso as informações da tabela, é transparente, não alterando o modo de uso dos comando T-SQL:
select * from TabelaTesteParticao
Até a próxima!
Nenhum comentário:
Postar um comentário
Leave your comment here!