admbd03_estrutura_do_banco_-_filegroups

Propaganda
Administração de Banco de Dados
José Antônio da Cunha
CEFET-RN
[email protected]
1
Filegroups

Utilizando filegroups para ganho de
performance e gerenciamento de espaço
Filegroups - são estruturas lógicas que sustentam os arquivos de dados em um
database. Um database padrão possui um arquivo de dados e um arquivo de
log; o arquivo de dados está associado a um filegroup chamado PRIMARY.
Pode-se criar outros arquivos de dados assim como outros filegroups, mas
porque, como e quando criar outros filegroups?
2
Filegroups

Arquitetura de um database
Apesar do nome singular, um database é uma estrutura formada por
pelo menos dois arquivos: um para armazenamento de dados (Master Data File,
extensão .MDF) e outro reservado para o log de transações (Log Data File,
extensão .LDF). Veja a Figura 1.
C:\Data\Teste_data.MDF
Teste
C:\Data\Teste_log.LDF
Figura 1: Estrutura típica de um database.
3
Filegroups

Arquitetura de um database
Além dos arquivos .MDF e .LDF, é possível criar outros arquivos para
armazenamento de dados. Estes arquivos secundários possuem extensão
.NDF, de Secondary Data Files e podem ser criados no mesmo filegroup do
arquivo .MDF (PRIMARY) ou em outro filegroup.
A decisão de utilizar o mesmo filegroup ou criar um novo depende da
finalidade do arquivo secundário. A seguir estão listados algumas situações
cuja resolução baseia-se na implementação de filegroups.
4
Filegroups

Arquitetura de um database
O arquivo de dados principal atingiu um tamanho que extrapola a capacidade
da unidade de fita DLT utilizada no backup. Esse problema pode ser resolvido
com a realocação de tabelas em outro filegroup, distribuindo o backup final em
partes menores que não ultrapassem a capacidade da fita. Nesse caso, devese criar outro filegroup para armazenar o arquivo secundário.
5
Filegroups

Arquitetura de um database
Você precisa criar um database com tamanho inicial de 35GB, mas não possui
esse espaço em uma única unidade de disco. A distribuição é a seguinte: 20GB
na unidade C e 15GB na unidade D. qual a solução? Crie um Master Data File
com 15GB em C e um Secondary Data File com 20GB em D. Os dois arquivos
constituirão uma unidade única de gerenciamento de espaço. O arquivo
secundário criado na unidade D será visto pelo SQL Server como uma
extensão natural do arquivo primário. Nesses casos, o arquivo secundário
deverá ser criado no mesmo filegroup do arquivo que se deseja expandir
(PRIMARY).
6
Filegroups

Arquitetura de um database
Você pode melhorar a performance de um database criando índices e tabelas
em filegroups distintos, localizados em unidades e controladores específicos.
Se as páginas de dados das tabelas forem armazenadas em unidades
diferentes daquela utilizada para os índices (por exemplo C e D), pesquisas
que utilizam índices serão beneficiadas por leituras executadas em paralelo.
Nesse caso, deve-se criar outro filegroup para armazenar o arquivo secundário.
A Figura 2 é um retrato de um database que utiliza arquivos secundário para
armazenamento de dados
7
Filegroups

Arquitetura de um database
C:\Data\db_Teste_data.MDF
C:\Data\db_Teste.NDF
Teste
C:\Data\db_Teste_log.LDF
Figura 2: Database que utiliza arquivo secundário (.NDF) para
armazenamento de dados.
8
Filegroups

Criando um database através de comandos TSQL
CREATE DATABASE [Teste] ON PRIMARY
(
NAME
= N’Teste_Data’,
FILENAME
= N’c:\Data\Teste_Data.MDF’,
SIZE
= 1,
FILEGROWTH
= 10%
)
LOG ON
(
NAME
= N’Teste_Log’,
FILENAME
= N’c:\Data\Teste_Log.LDF’,
SIZE
= 1,
FILEGROWTH
= 10%
)
9
Filegroups

Criando um database através de comandos TSQL
No exemplo anterior, criamos o database Teste_data no filegroup
PRIMARY representado por c:\Data\Teste_data.MDF. o database também
possui um arquivo de Log em c:\Data\Teste_Log.LDF, mas ainda não criamos
arquivos secundários.
10
Filegroups

Adicionando arquivo secundário
ALTER DATABASE [Teste]
ADD FILE
(
NAME = N'Teste_Data2',
FILENAME = N‘C:\Data\Teste_Data2.NDF',
SIZE = 1,
FILEGROWTH = 10%
) TO FILEGROUP [PRIMARY]
11

Criando banco de dados com multiplos arquivos
CREATE DATABASE Exemplo
ON PRIMARY
( NAME = exemplo_prim,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_prim.mdf’,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15%),
( NAME = exemplo_sec1,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_sec1.ndf’,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15%),
FILEGROUP VendasGroup1 --File grupo secundário
( NAME = exemplo_sec2,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_sec2.ndf’,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5%),
12
( NAME = exemplo_sec3,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_sec3.ndf’,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15%),
FILEGROUP VendasGroup2 --segundo filegroup
( NAME = exemplo_sec4,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_sec4.ndf’,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5),
( NAME = exemplo_sec5,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_sec5.ndf’,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15%)
LOG ON
( NAME = exemplo_log,
FILENAME = ‘C:\Dadossql\exemplo\exemplo_lo.ldf’,
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB)
[email protected]
13
Filegroups

Conclusão
No SQL Server temos o conceito de Filegroup. Este conceito muitas vezes não
é utilizado na prática por falta de entendimento do que ele significa, como pode
ser utilizado e quais as vantagens em utilizar filegroups.
A utilização de um filegroup permite que os arquivos de um Banco de Dados
sejam agrupados para facilitar o gerenciamento, bem como a distribuição ao
longo de volumes redundantes e de melhor desempenho (RAID-0, RAID-1,
etc.). A utilização de filegroup pode ser um auxiliar valioso na melhoria do
desempenho de um Banco de Dados, ao permitir que o Banco de Dados
(através dos seus diversos arquivos) seja criado em múltilpos discos, múltiplas
controladoras ou em sistemas do tipo RAID. Também podemos fazer com que
uma tabela ou índice seja criada em um disco específico, simplesmente
associando a tabela ou índice com um filegroup.
14
Download