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