admbd02_estrutura_do_banco_-_paginas_e_extencoes

Propaganda
Administração de
Banco de Dados
George Azevedo da Silva
José Antônio da Cunha
ADM. Banco de Dados
Entendendo como funciona a organização física de um database
Quando criamos um database, O SQL Server faz uma pré-alocação de espaço,
segmentando o database em páginas de 8kb, numeradas seqüencialmente. Cada
conjunto de oito páginas contíguas formam uma unidade lógica maior denominada
extensão (extent). Uma tabela nasce numa extent mista e cresce em extents
uniformes, por questão de otimização de espaço.
31/05/2017
José Antônio da Cunha
2
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
Quando uma tabela é criada, o SQL Server faz uma consulta nas páginas que
controlam extents mistas para obter um endereço de extent com espaço disponível.
Da mesma maneira, quando essa tabela precisa se expandir será efetuada uma busca
nas páginas que controlam extents uniformes para obter o endereço de uma extent
livre (estamos falando de páginas GAM e SGAM respectivamente).
31/05/2017
José Antônio da Cunha
3
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
GAM – Global Allocation Map
SGAM – Shared Global Allocation Map
•Páginas GAM controlam a alocação de extents uniformes;
•Páginas SGAM controlam a alocação de extents mistas.
Essas páginas são criadas no momento da “demarcação” do database, que acontece
na sua criação ou no momento da expansão.
31/05/2017
José Antônio da Cunha
4
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
Num database, a terceira página será sempre ocupada por uma página GAM e a
quarta por uma SGAM, responsáveis por gerenciar as próximas 64.000 extents. A
página GAM utiliza um bit para informar se a próxima extent está livre ou não;
como existem 8.000 bytes livres numa página, e cada byte controla 8 extents
seqüências, chegamos no resultado de 64.000 extents controladas por uma página
GAM.
31/05/2017
José Antônio da Cunha
5
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
Portanto, o duedo de páginas GAM/SGAM controla até 4GB de dados (64.000 *
64KB) (64 KB é o tamanho de uma extent). Se você criar um database de 5GB,
serão encontradas 2 páginas GAM; a primeira será a página de número 3 e a
segunda virá após aproximadamente 64.000 * 8 = 512.000 páginas (na verdade, esse
número é 511.232, pois são descontados 97 bytes de cada página para controle
interno). O mesmo critério vale para as páginas SGAM, ocupando as posições de
número 4 e 511.233.
31/05/2017
José Antônio da Cunha
6
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
Pag 0
Pag 1
Header
Do
PFS
database
Pag 2
Pag
8088
Pag 3
.....
GAM
SGAM
.....
PFS
Pag
16176
PFS
.....
Pag
Pag
511232 511233
GAM SGAM
Além de administrar extents com páginas GAM/SGAM, existe um controle
adicional, informando se a página está ou não alocada e seu percentual de
utilização. Esse controle é exercido por páginas com o anacrônimo PFS, de Page
Free Space. Cada página PFS controla 8.088 páginas contíguas num database. A
primeira página PFS é a de número 1, logo após a header do database,
representada pela página 0. Como mostra a Figura acima.
31/05/2017
José Antônio da Cunha
7
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
Existe ainda um controle utilizado para gerenciar as extent utilizadas por heaps e
índices, fornecido pelas páginas IAM (Index Allocation Map). Uma página IAM
controla 512.000 páginas de uma tabela. Diferentemente das páginas GAM, SGAM
e PFS que são demarcadas na criação e/ou alteração de tamanho do database,
páginas IAM são alocadas randomicamente (= “on demand”) à medida que a tabela
(ou índice cresce). As páginas IAM são utilizadas em conjunto com as páginas PFS
para orientar o banco nas inclusões.
31/05/2017
José Antônio da Cunha
8
ADM. Banco de Dados
Entendendo com funciona a organização física de um database
Assim, quando ocorre um insert numa heap e a página atual já se encontra
totalmente preenchida, é efetuada uma busca conjunta nas páginas IAM e PFS para
determinar uma página já pertencente a essa tabela para acomodar a inserção. Se
não encontrar espaço nas páginas PFS, será efetuada uma requisição na página
GAM para uma nova extent.
Observação: tabelas com índices cluster não se orientam com base nas páginas
IAM, pois as inserções não são baseadas na teoria de “onde existe espaço”, mas
sim na chave do índice cluster.
31/05/2017
José Antônio da Cunha
9
ADM. Banco de Dados
Visualizando a organização física de um database
Comando: dbcc checkalloc
***************************************************************
Table sys.sysrscols
Object ID 3.
Index ID 1, partition ID 196608, alloc unit ID 196608 (type In-row data).
FirstIAM (1:2261). Root (1:80). Dpages 0.
Index ID 1, partition ID 196608, alloc unit ID 196608 (type In-row data).
75 pages used in 9 dedicated extents.
Total number of extents is 9.
***************************************************************
31/05/2017
José Antônio da Cunha
10
Download