Estrutura de armazenamento de dados

Propaganda
Banco de Dados II
Prof: Márcio Soussa
Curso de Sistemas de Informação
Faculdades Jorge Amado
Referências Bibliográficas
Sistemas de Banco de Dados
Elmasri, Navathe
Implementação de Sistemas de Bancos de
Dados, Garcia-Molina
Introdução a Sistemas de Bancos de Dados, C.J.
Date, Ed. Campus.
Sistema de Banco de Dados, A Silberschatz, H.F.
Korth, Ed. Makron Books
Arquitetura de um SGBD
Referência
Respostas
Comandos da
Aplicação /usuário/ DBA
Catálogo do
Sistema
Compilador
Otimizador
Gerente de Transações
Gerente
de
bloqueios
Gerente
de
logs
LOG
Gerente de
acesso a
dados
BD
Gerente
de
buffers
Instância e Banco de Dados
Oracle
ORACLE INSTANCE
USER
PROCESS
SGA
SHARED POOL
(SYSTEM GLOBAL AREA)
LIBRARY
CACHE
SERVER
PROCESS
DATABASE
BUFFER CACHE
DBWR
SMON
DATAFILES
PARAMETER
FILE
PASSWORD
FILE
REDO LOG
BUFFER
DATA
DICTIONARY
PMON
LGWR
CONTROL
FILES
REDO LOG
FILES
CKPT
ARCHIVED
LOG FILES
Estruturas de Armazenamento
Banco de Dados Oracle
BANCO
DE DADOS
TABLESPACE
DATAFILES
SEGMENTO
EXTENSÃO
BLOCO
ORACLE
BLOCO
S/O
Unidades Lógicas
Blocos de Disco
Blocos de disco:
Também chamados de páginas de disco
Representam a unidade básica de I/O
Local onde os registros de dados, índices, blobs ficam
armazenados.
Configurável via o SGBD
Tamanho ideal ? (OLTP, OLAP)
A maioria dos SGBDs não permite compartilhamento de blocos
de disco
Permitem compartilhamento das extensões (extents)
Unidades Lógicas
Tipos de Dados
Tipos de Dados
Inteiro (2 e 4 bytes)
Float (4 e 8 bytes)
Char(n) - Varchar(n) (Qual a diferença ?)
Date
String de caracter de tamanho fixo ( 10 caracteres) – AAAAMM-DD
Time
String de caracter de tamanho fixo ( 8 caracteres) –
HH:MM:SS
Bit(n)
Blobs (Binary large Objects)
Unidades Lógicas
Extensões
Extensões (Extents):
Quantidade de blocos contíguos
Configurável (Depende do SGBD)
Extensão inicial,
Extensão incremental
Número máximo de extensões e espaço
Geralmente os SBGDs separam extensões distintas para tipos
de dados distintos
Dados (Data Page)
Índices (Índex Page)
Blobs (Blobs Page)
Auxilia na desfragmentação dos blocos melhorando assim a
performance
Unidades Lógicas
Extensões e Páginas (Blocos)
64 k
4k 4k 4k 4k
4k 4k 4k 4k
64 k
4k 4k 4k 4k
4k 4k 4k 4k
Blocos de disco
Extensões
Unidades Lógicas
Segmentos
Segmentos (Segments):
Divisões de uma tablespace
Há diferentes tipos de segmentos:
Segmento de dados (Data segment): Cada tabela possui
um único segmento de dados para manter todos os seus
dados
Segmento de índice (Index segments): Cada índice em um
banco de dados Oracle possui um único segmento de
índice.
Segmentos temporários (Temporary segments): Área de
trabalho temporária (TEMP)
Segmentos de Rollback: Utilizados para desfazer
transações
Unidades Lógicas
Tablespaces
Tablespaces:
Divisão do banco de dados em uma ou mais unidades lógicas de
armazenamento
Permite a distribuição dos objetos (Tabelas, índices, etc) do esquema
em dispositivos distintos
Diminui a concorrência de acesso aos dados
Cada tablespace relaciona-se com um ou mais arquivos de dados
físicos (datafiles )
Relação tablespace e schema é de MxN
Algumas tablespaces são criadas automaticamente Users e System
Evitar criar objetos do esquema na tablespace SYSTEM para evitar
concorrência com o catálogo (dicionário de dados) do Oracle.
Unidades Lógicas
Tablespaces
CREATE TABLESPACE tablespace
DATAFILE datafile_clause]
[, datafile_clause]
{extent_management_clause}
[MINIMUM EXTENT integer[K|M]]
[LOGGING | NOLOGGING]
[DEFAULT STORAGE storage_clause ]
[ONLINE | OFFLINE]
[PERMANENT | TEMPORARY]
Unidades Físicas
Arquivos
Arquivos de Dados (Data Files)
Objetos dos bancos de dados
Arquivos de Redo Log
Recupera o bd após falha física ou de sistema
Arquivos de controle
Configurações do banco de dados
Nome, data da criação,
Nome das tablespaces, localização dos arquivos de log, etc.
Informações de checkpoint
Estruturas de Armazenamento
Manipulação de Registros
Problemas com manipulação de registros
Gargalo de um SGBD é o acesso ao disco
Ordenação física dos registros (cluster)
Inserção: Deslizamento entre blocos ou
Blocos de estouro
Deleção: Deslizamentos de blocos
Atualização: Mesmos problemas dos anteriores
Solução:
Manutenção de espaço livre nos blocos de disco.
Evita “page splits”
SQL Server: FillFactor
Oracle: PCTFree, PCTUsed
Estruturas de Armazenamento
Preenchimento de blocos (Oracle)
CABEÇALHO
ESPAÇO LIVRE
PCTFREE
DADOS
PCTUSED
Arquitetura Oracle
Tabela
CREATE TABLE [schema.]tabela
(column datatype [, column datatype] ... )
[TABLESPACE tablespace]
[PCTUSED
integer]
[PCTFREE
integer]
[INITRANS
integer]
[MAXTRANS
integer]
[STORAGE storage_clause]
[LOGGING | NOLOGGING]
[CACHE | NOCACHE]
Estruturas de Armazenamento
Exemplo do Metadados
User_Tables (Aluno)
PCT_
Free
Initial_
Extent
Num_
Rows
Blocks
Empty_
Blocks
Avg_Row
Length
0
10240
10.000
?
?
58
Supondo o bloco de disco configurado para 8k, quantos blocos de disco
a tabela aluno ocuparia ?
Cada bloco de disco possui 90 bytes de controle
Download