PostgreSQL Índices Nuno Campos N.º 51431. Nuno Campos - N.º 51431 2 Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.

Slides:



Advertisements
Apresentações semelhantes
Otimização de Consultas em SQL Estimativas de Custos
Advertisements

Banco de Dados Prof. Antonio.
SQL Structured Query Language (continuação)
Evolução dos SGBD’s (2ª Parte).
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Data Warehouse Tuning O que é um Data Warehouse? Índices Bitmap
Trabalho de Desenvolvimento
Maurício Edgar Stivanello
Indice estruturado por Hash
Algoritmos de Junção – BNL e IndexNL AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
Daniel J. Abadi – Yale - New Haven, USA Samuel R. Madden – MIT – Cambrigde, USA Nabil Hachem – Avantgarde Consulting – Shrewbury, USA SIGMOD '08 Apresentado.
Arquivos Extensíveis.
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
Pesquisa em Memória Primária
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Análise Léxica Supondo o trecho de programa abaixo:
Construção de Compiladores
Estrutura de Dados Espaciais
Folha de Cálculo TIC 10.
4/1/2017 Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco.
High-Performance Extensible Indexing Publicado em 1999 na 25th VLDB Conference Por: Marcel Kornacker Apresentado por: Gustavo Augusto e Ivan Silva TABD.
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
Algorítmos e estrutura de dados III
Usando Microsoft Access 2010
É um conjunto de registos dispostos numa estrutura regular que possibilita a reorganização dos mesmos e a produção de informação com a menor redundância.
Otimizador de consultas
Universidade Católica de Pelotas Mestrado em Ciência da Computação
ACESSO A BASE DE DADOS.
Arquivos Estruturados por Hashing– Custos I/O
sintonia de banco de dados
Algoritmos de Processamento e Otimização de Consultas
III – Oracle10g Apontadores – Tipo de Dado (REF).
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Banco de dados.
Análise Léxica.
Tradução Dirigida por Sintaxe
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Query processing in main memory Vitor Silva. Bibliografia “Query Processing in Main Memory Database Management Systems” - Tobin J. Lehman & Michael J.
©Silberschatz, Korth and Sudarshan (Modificado)1.1Database System Concepts Capítulo 1: Introdução Função dos Sistemas de Bases de Dados Visão dos dados.
©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
Banco de Dados I I Comandos SQL
Linguagem SQL Prof. Juliano.
III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
AULA 21 Profa. Sandra de Amo BCC - UFU
Algoritmos de Junção – IndexNL e Sort Merge Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.
Algoritmos para o operador de Projeção AULA 19 – Parte II Profa. Sandra de Amo GBC053 – BCC.
PostGres - Transacções
PostgresSQL Optimização de Interrogações Francisco Santos.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Capítulo 9: SAD orientado a Modelo
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Professor: Pedro Lopes Gestão de Base de dados Ano Lectivo 2010/2011.
MANIPULAÇÃO DE CÉLULAS, LINHAS E COLUNAS
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
©Silberschatz, Korth and Sudarshan (modificado)6.1.1Database System Concepts Capítulo 6: Integridade e Segurança Restrições ao Domínio Integridade Referencial.
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Folha de Cálculo Professor: Pedro Lopes Ano Lectivo 2010/2011.
Banco de Dados SQL (Structured Query Language) Hayslan Nicolas Colicheski Bucarth – IFRO / 2015 –
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Folha de cálculo - EXCEL. O que é a folha de cálculo Folha de cálculo integrada: – Funções de base de dados – Possibilidade de criação de gráficos – Ferramentas.
Transcrição da apresentação:

PostgreSQL Índices Nuno Campos N.º 51431

Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores Índices Compostos Índices Únicos Índices em Expressões Índices Parciais Examinar a Utilização do Índice

Nuno Campos - N.º Introdução PostgreSQL actualiza índice quando uma tabela é modificada Trabalho extra para operações de manipulação de dados Índices não essenciais ou não utilizados devem ser removidos postgresql-8.1.0\src\ – \backend\access\ - Métodos de acesso aos dadosaccess\ \gist\ – definição de métodos de acesso \gist \hash\ – métodos dos índices hash \hash \index\ – usado por todos os tipos de índices \index \nbtree\ – algoritmo Lehman and Yao's de gestão de b+tree \nbtree \rtree\ - métodos usados em r-tree’s – \backend\catalog – Rotinas de criação e manipulação de índices \backend\catalog

Nuno Campos - N.º Tipos de Índices (B-Tree) B+Tree Utiliza-se em igualdades e intervalos Usa Algoritmos de Lehman e Yao com alterações: – Chaves de tamanho variável – Trinco nas leituras a nível da página – Ligação entre nós folhas é bidireccional

Nuno Campos - N.º Tipos de Índices (R-Tree) Divide espaço com caixas aninhadas hierarquicamente (pode haver sobreposição) Árvore com nós folhas à mesma profundidade Adequados para consultas a dados espaciais Optimizador considera o uso de uma R-Tree para comparações envolvendo: – << (Está à esquerda?) – &< (Não se estende à direita de?) – &> (Não se estende à esquerda de?) – >> (Está à direita?) (Está contido ou sobre?) – ~= (O mesmo que?) – && (Sobrepõem-se?)

Nuno Campos - N.º Tipos de Índices (Hash) Algoritmo de Hashing Linear desenvolvido por W. Litwin Optimizador considera o uso de Hash para comparações de igualdades. No PostgreSQL, os índices Hash: – Desempenho semelhante a B-Trees – Tamanho e tempo de construção piores – Utilização desencorajada.

Nuno Campos - N.º Tipos de Índices (GiST) GiST – Generalized Search Tree Estrutura em árvore Implementação de esquemas de índices Desenvolvimento de tipos de dados próprios

Nuno Campos - N.º Classes de Operadores Pode ser especificada para cada coluna do índice Identifica os operadores a serem usados pelo índice para cada coluna Cada classe inclui funções para o tipo respectivo Usualmente a classe de operadores padrão é suficiente

Nuno Campos - N.º Índices Compostos Índice com mais de um atributo SELECT nome FROM teste2 WHERE principal = constante AND secundario = constante; CREATE INDEX idx_teste2_princ_sec ON teste2 (principal, secundario); PostgreSQL – B-Tree, GiST – src\include\pg_config_manual.h (INDEX_MAX_KEYS 32)

Nuno Campos - N.º Índices Únicos Obrigam à unicidade do valor de uma coluna CREATE UNIQUE INDEX nome … Permite interromper a procura de valores múltiplos quando estes não existem PostgreSQL – Apenas índices B-Tree podem ser declarados únicos – Índice criado automáticamente quando é definida: Uma restrição de unicidade Uma chave primária

Nuno Campos - N.º Índices em Expressões Índices sobre expressões em vez de colunas Útil para acesso a tabelas resultantes de cálculos CREATE INDEX idx_teste1_lower_col1 ON teste1 (lower(col1)); Dispendioso manter expressões de índice porque – Expressão computada para cada tuplo inserido – Expressão computada para cada tuplo actualizado

Nuno Campos - N.º Índices parciais Índice construído sobre subconjunto da tabela – Definido por expressão condicional – predicado Índice contém entradas para linhas que satisfazem predicado Evita indexar valores frequentes Reduz tamanho do índice Acelera consultas e actualizações

Nuno Campos - N.º Examinar a utilização do índice ANALYZE – Recolhe estatísticas sobre a distribuição de valores nas tabelas – Necessária para estimar tuplos devolvidos EXPLAIN – Exame de utilização de um índice – Devem ser usados dados reais

Nuno Campos - N.º Referências Efficient Locking for Concurrent Operations on B- Trees, Lehman e Yao, 1981 Database Systems and Concepts, Silbertchatz, Korth and Sudarshan, 5ª edição, SQL/gist.html SQL/gist.html

Nuno Campos - N.º Exemplo B+Tree

Nuno Campos - N.º Exemplo R-Tree Devolver as imagens com x < 5 e y <10

Nuno Campos - N.º Exemplo Hashing Linear (1) Inserir 10 tuplos com valores de Hash: – 0011, 0010, 0100, 0001, 1000, 1110, 0101, 1010, 0111, 1100 – Factor de carregamento (fc) – máximo 0,70 Inserir cinco valores (fc = 5/8 = 0,625) n – apontador para bucket a dividir, quando chega à posição 3, volta ao inicio

Nuno Campos - N.º Exemplo Hashing Linear (2) Quando inserimos o 6º valor Fc = 6/8 = 0,75  divisão de bucket n = 0 Fc = 6/10 = 0,6; n =

Nuno Campos - N.º Exemplo Hashing Linear (3) Quando inserimos 0101, fc = 7/10 = 0,7 Quando inserimos 1010, fc = 8/10 = 0, overflow

Nuno Campos - N.º Exemplo Hashing Linear (4) Divide n = 1; fc = 8/12 = 0,66 Inserir 0111; fc = 9/12 = 0,75; ocorre divisão para n = overflow