PostgreSQL Performance



Documentos relacionados
DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% %

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Administração e Optimização de BDs

Bases de Dados. Parte IX: Organização Física dos Dados

SQL - Criação de Tabelas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Administração de Banco de Dados

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Unidade 5 Armazenamento e Indexação

Prof. Daniela Barreiro Claro

Prof. Daniela Barreiro Claro

Junções e Índices em Tabelas

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

ESTRUTURA INTERNA DO SISTEMA ESTRUTURA GERAL DO SGBD. Desempenho do BD ÙSatisfação do usuário. A performance do sistema depende:

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Sistemas de Informação

Algoritmos de pesquisa. Tabelas de dispersão/hash

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Comandos de Manipulação

Exercícios de Lógica Exercícios de Fixação 08

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Arquitetura de SGBD Relacionais Previsão de Seletividade

Processamento e Otimização de Consultas

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Um objeto de estatística contém informações de distribuição de valores de uma ou mais colunas de uma tabela ou view indexada

Sistemas de Arquivos. André Luiz da Costa Carvalho

Prof. Bruno Calegaro

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

O que são Bancos de Dados?

Bases de Dados. Lab 1: Introdução ao ambiente

Prof.: Clayton Maciel Costa

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Bases de Dados 2005/2006. Aula 5

Oracle Advanced Compression x External Tables (Armazenamento de dados históricos)

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Gerência do Sistema de Arquivos. Adão de Melo Neto

Índice. Introdução às bases de dados. Parte 1 ÍNDICE DE FIGURAS E QUADROS 11 CONVENÇÕES USADAS NESTE MANUAL 15 PREFÁCIO 17

Bases de Dados. Índices. Discos. transferência rápida e aos bytes. transferência lenta e em blocos (512B ~ 4KB) memória. disco BD / aplicação

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Arquitetura de SGBD Relacionais Métodos de Acesso Físico

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

NOME SEXO CPF NASCIMENTO SALARIO

Plano da aula de hoje

Armazenamento e Indexação 5

Principal: construir uma base de dados para produção de informações sobre internações hospitalares;

Hashing Letícia Rodrigues Bueno

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos,

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Regras de Integridade. Profa. Késsia Marchi

PostgreSQL e C++ (libpq)

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Linguagem SQL Sub-linguagem DDL

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Capítulo 6 Sistemas de Arquivos

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Cap. 3 Organização de Ficheiros e Indexação

Tarefa Orientada 16 Vistas

António Rocha Nuno Melo e Castro

AULA 16 - Sistema de Arquivos

Banco de Dados. Maurício Edgar Stivanello

Sistemas Operacionais

Comandos DDL. id_modulo = id_m odulo

Sistemas de Base de Dados 2010/11 GRUPO 10 ANDRÉ MOURÃO Nº EDUARDO COSTA Nº RICARDO MARQUES Nº 35048

Bases de Dados 1º semestre

PostgreSQL Troubleshooting e Monitoramento

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

1. Domínio dos Atributos

Cursos Guia DBA Pacote Curso SQL Server 2014 e o passo a passo para otimização SQL Server 2016

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

SQL (Structured Query Language)

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Tarefa Orientada 14 Subconsultas

Bases de Dados 2008/2009

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Sistemas de Ficheiros. 1. Ficheiros 2. Directórios 3. Implementação de sistemas de ficheiros 4. Exemplos de sistemas de ficheiros

Fundamentos de Sistemas Operacionais

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Treinamento PostgreSQL - Aula 03

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Operação de União JOIN

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Fundamentos de Banco de Dados

Sumário. Introdução O Problema... 3

Administração e Optimização de BDs

Linguagem SQL Parte I

Hugo Pedro Proença, 2007

Bases de Dados. Índices. Discos. transferência lenta. transferência rápida e em blocos (512B ~ 4KB) e aos bytes. memória.

Introdução ao PostgreSQL

Transcrição:

PostgreSQL Performance André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) PostgreSQL Performance February 24, 2012 1 / 45

Sumário 1 Armazenamento 2 Índices 3 Planeamento 4 PostgreSQL André Restivo (FEUP) PostgreSQL Performance February 24, 2012 2 / 45

Outline Armazenamento 1 Armazenamento 2 Índices 3 Planeamento 4 PostgreSQL André Restivo (FEUP) PostgreSQL Performance February 24, 2012 3 / 45

Armazenamento Armazenamento Dados guardados em blocos (unidades mínimas de leitura). Cada bloco contém vários tuplos. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 4 / 45

Armazenamento Indicadores Número de Tuplos: t Tamanho do Bloco: B bytes Tamanho de cada tuplo: T bytes Normalmente B >= T Blocking Factor - bfr = B / T Número de Blocos - b = t / bfr André Restivo (FEUP) PostgreSQL Performance February 24, 2012 5 / 45

Armazenamento Performance Um dos maiores obstáculos a uma boa performance é o acesso ao disco. Os acessos ao disco são feitos bloco a bloco. É necessário minimizar o número de blocos que é necessário ler de cada vez que se consulta informação da base de dados. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 6 / 45

Armazenamento Exemplo t = 30000 tuplos B = 1024 bytes T = 100 bytes bfr = 1024 / 100 = 10 tuplos por bloco b = 30000 / 10 = 3000 blocos André Restivo (FEUP) PostgreSQL Performance February 24, 2012 7 / 45

Armazenamento Tuplos Desordenados Ficheiro Sequencial de Tuplos Desordenados. Pesquisa: Pela chave primária Por outro campo Vantagens: inserção. Desvantagens: remoção, pesquisa, ordenação,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 8 / 45

Armazenamento Tuplos Desordenados Ficheiro Sequencial de Tuplos Desordenados. Pesquisa: Pela chave primária - b/2 leituras = 1500 Por outro campo - b leituras = 3000 Vantagens: inserção. Desvantagens: remoção, pesquisa, ordenação,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 8 / 45

Armazenamento Tuplos Ordenados pela Chave Primária Ficheiro Sequencial de Tuplos Ordenados pela Chave Primária. Pesquisa: Pela chave primária Por outro campo Vantagens: pesquisa e ordenação pela chave primária. Desvantagens: inserção, remoção, pesquisa e ordenação por outras colunas,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 9 / 45

Armazenamento Tuplos Ordenados pela Chave Primária Ficheiro Sequencial de Tuplos Ordenados pela Chave Primária. Pesquisa: Pela chave primária - log2 b = 12 leituras Por outro campo - b = 3000 leituras Vantagens: pesquisa e ordenação pela chave primária. Desvantagens: inserção, remoção, pesquisa e ordenação por outras colunas,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 9 / 45

Outline Índices 1 Armazenamento 2 Índices 3 Planeamento 4 PostgreSQL André Restivo (FEUP) PostgreSQL Performance February 24, 2012 10 / 45

Índices Indexação Hash Ficheiros indexados usando uma função de Hash. Pesquisa Vantagens: pesquisa (igualdade), remoção, inserção. Desvantagens: pesquisa (outro método), ordenação, colisões, espaço em disco,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 11 / 45

Índices Indexação Hash Ficheiros indexados usando uma função de Hash. Pesquisa - 1 leitura Vantagens: pesquisa (igualdade), remoção, inserção. Desvantagens: pesquisa (outro método), ordenação, colisões, espaço em disco,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 11 / 45

Índices Indexação por Apontadores Ficheiros auxiliares ordenados contendo pares valor/apontador. Índices densos contêm um par valor/apontador para cada tuplo. Índices esparsos contêm um par valor/apontador para cada bloco. Usados apenas quando os tuplos estão ordenados pelo campo de indexação. Índices primários quando o campo de indexação é a chave primária. Índices secundários quando o campo de indexação é outro. Índices aglomerado (clustered) quando os tuplos estão ordenados pelo campo de indexação. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 12 / 45

Índices Indexação por Apontadores Índice esparso primário aglomerado. Índice denso secundário. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 13 / 45

Índices Exemplo Índice Denso Campo de indexação = 9 bytes Apontador para bloco = 6 bytes (2.8x10 14 tuplos) t i = r = 30000 T i = 9 + 6 = 15 bytes bfr i = 1024 / 15 = 68 tuplos por bloco b i = 30000 / 68 = 442 blocos Pesquisa André Restivo (FEUP) PostgreSQL Performance February 24, 2012 14 / 45

Índices Exemplo Índice Denso Campo de indexação = 9 bytes Apontador para bloco = 6 bytes (2.8x10 14 tuplos) t i = r = 30000 T i = 9 + 6 = 15 bytes bfr i = 1024 / 15 = 68 tuplos por bloco b i = 30000 / 68 = 442 blocos Pesquisa - log 2 442+1 = 10 leituras André Restivo (FEUP) PostgreSQL Performance February 24, 2012 14 / 45

Índices Exemplo Índice Esparso Campo de indexação = 9 bytes Apontador para bloco = 6 bytes (2.8x10 14 tuplos) t i = b = 3000 T i = 9 + 6 = 15 bytes bfr i = 1024 / 15 = 68 tuplos por bloco b i = 3000 / 68 = 45 blocos Pesquisa André Restivo (FEUP) PostgreSQL Performance February 24, 2012 15 / 45

Índices Exemplo Índice Esparso Campo de indexação = 9 bytes Apontador para bloco = 6 bytes (2.8x10 14 tuplos) t i = b = 3000 T i = 9 + 6 = 15 bytes bfr i = 1024 / 15 = 68 tuplos por bloco b i = 3000 / 68 = 45 blocos Pesquisa - log 2 45+1 = 7 leituras André Restivo (FEUP) PostgreSQL Performance February 24, 2012 15 / 45

Índice Multinível Índices Cada nível indexa o nível seguinte. b i2 = 30000/68=442 blocos b i1 = 442/68=7 blocos b i0 = 7/68=1 bloco Pesquisa André Restivo (FEUP) PostgreSQL Performance February 24, 2012 16 / 45

Índice Multinível Índices Cada nível indexa o nível seguinte. b i2 = 30000/68=442 blocos b i1 = 442/68=7 blocos b i0 = 7/68=1 bloco Pesquisa - 4 leituras André Restivo (FEUP) PostgreSQL Performance February 24, 2012 16 / 45

Árvores B+ Índices Este tipo de indexação baseia-se numa estrutura de dados em forma de árvore em que cada nodo contém: q apontadores para outro nodo q 1 valores Os nodos do último nível (folhas) contêm: q 1 apontadores q 1 valores apontador para o próximo bloco folha Permite também ordenar e pesquisar em intervalos (ao contrário dos indíces hash). Vantagens: pesquisa em intervalos, ordenação,... Desvantagens: pesquisa (um pouco mais lenta do que com hash), inserção, remoção, reorganização,... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 17 / 45

Árvores B+ Índices André Restivo (FEUP) PostgreSQL Performance February 24, 2012 18 / 45

Índices Árvores B+ A ocupação de uma árvore B+ nunca deve ultrapassar 90% da sua capacidade. Quando este valor é atingido, é criada um novo nível na árvore. Numa árvore B+ a 70% da sua capacidade: Árvore B+ com espaço para 34 pares valor-apontador. 34 * 0.7 = 22 valores e 23 apontadores. Raiz: 1 nó = 22 valores e 23 apontadores. Nível 1: 23 nós = 506 valores e 529 apontadores. Nível 2: 529 nós = 11638 entradas e 12167 apontadores. Folhas: 12167 nós = 255507 apontadores para blocos. 2.5 milhões de tuplos. Permite pesquisar qualquer valor lendo apenas 5 blocos. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 19 / 45

Índices Índices Bitmap Os índices bitmap são utilizados em colunas com poucos valores diferentes. Para cada valor possível é criado um bitmap contendo um 0 ou um 1 para cada tuplo da tabela dependendo do valor da coluna ser igual ao valor do bitmap. Utilizando operações extremamente rápidas, um índice bitmap é capaz de calcular quais os tuplos que tornam verdade uma expressão booleana. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 20 / 45

Índices Bitmap Índices André Restivo (FEUP) PostgreSQL Performance February 24, 2012 21 / 45

Índices Bitmap Índices André Restivo (FEUP) PostgreSQL Performance February 24, 2012 21 / 45

Índices Índices Bitmap Campo de indexação Masculino / Feminino t i = t = 30000 T i = 2 estados = 2 bits bfr i = 1024 * 8 / 2 = 4096 tuplos por bloco b i = 30000 / 4096 = 8 blocos André Restivo (FEUP) PostgreSQL Performance February 24, 2012 22 / 45

Full Text Search Índices Pesquisa em texto. Sem mais nenhum mecanismo: Podemos pesquisar por The mas não por five. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 23 / 45

Full Text Search Índices Separando o índice em palavras e retirando as maiúsculas. Podemos pesquisar por five mas não por ive. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 24 / 45

Full Text Search Índices Separando cada palavra nas suas terminações. Podemos pesquisar por pack. Podemos pesquisar por ack. Podemos pesquisar por pac. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 25 / 45

Full Text Search Índices Pesquisa ainda mais eficaz: Palavras que não devem ser indexadas (stop words). Sinónimos (usando dicionários). Frases como uma só palavra (thesaurus). Diferentes variações de uma palavra (stem rules e dicionários). André Restivo (FEUP) PostgreSQL Performance February 24, 2012 26 / 45

Índices Escolher Índices São criados índices nas chaves primárias e únicas automaticamente. Criar índices nos atributos pesquisados frequentemente em tabelas grandes. Criar índices nos atributos de junção (sempre?). Criar índices hash se as pesquisas usar o operador de igualdade (junções também). Criar índices do tipo btree para ordenações e pesquisas em intervalos. Criar índices clustered se as pesquisas retornarem muitos resultados ( 10%). Usar ferramentas de análise. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 27 / 45

Outline Planeamento 1 Armazenamento 2 Índices 3 Planeamento 4 PostgreSQL André Restivo (FEUP) PostgreSQL Performance February 24, 2012 28 / 45

Planeamento Planeamento e Optimização de Queries Ordem das junções (JOIN) A (10 linhas), B (1000 linhas), C (1000000 linhas) A (B C) ou (A B) C System R algorithm programação dinâmica Que índices usar? Perguntas encadeadas (IN, NOT IN, EXISTS,...) Nem sempre podem ser transformadas em junções. Por vezes são queries separadas (plano separado). Estimativa de Custo de um Plano Problema extremamente complicado. O SGBD usam sistemas de regras e dados estatísticos. "Inside the PostgreSQL Query Optimizer", Neil Conway, http://neilconway.org/talks/optimizer/optimizer.pdf André Restivo (FEUP) PostgreSQL Performance February 24, 2012 29 / 45

Planos Alternativos Planeamento André Restivo (FEUP) PostgreSQL Performance February 24, 2012 30 / 45

Outline PostgreSQL 1 Armazenamento 2 Índices 3 Planeamento 4 PostgreSQL André Restivo (FEUP) PostgreSQL Performance February 24, 2012 31 / 45

Criar Índices PostgreSQL Sintaxe CREATE INDEX name ON table ( column ) USING ( type ) ; DROP INDEX name ; type pode ser: hash (não recomendado em PostgreSQL) btree (por omissão) gin (Generalized Inverted Index) gist (Generalized Search Tree) André Restivo (FEUP) PostgreSQL Performance February 24, 2012 32 / 45

PostgreSQL Índices Multi-coluna Sintaxe CREATE INDEX idxname ON tablename ( column1, column2 ) ; Permite pesquisar por column1. Permite pesquisar por column1 e column2. Mas não por column2 isoladamente. Similar a uma lista telefónica. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 33 / 45

PostgreSQL Índices Únicos Sintaxe CREATE UNIQUE INDEX idxname ON tablename ( column ) ; Garantem que não existem repetidos. Unique Keys são açucar sintático. André Restivo (FEUP) PostgreSQL Performance February 24, 2012 34 / 45

PostgreSQL Índices Parciais Sintaxe CREATE INDEX idxname ON tablename ( column ) WHERE c o n d i t i o n ; Permitem criar índices sobre partes de uma tabela. São usados quando uma pesquisa usa a mesma condição do índice. Permitem poupar espaço e tempo. Exemplo SELECT FROM u s e r WHERE type = ADMIN ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 35 / 45

Índices Únicos Parciais PostgreSQL Sintaxe CREATE UNIQUE INDEX idxname ON tablename ( column ) WHERE c o n d i t i o n ; Permitem criar restrições que de outra forma tinham de ser feitas usando triggers. Exemplo CREATE UNIQUE INDEX admin_department_idx ON people ( dep_id ) WHERE type = ADMIN ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 36 / 45

PostgreSQL Índices Sobre Funções Sintaxe CREATE INDEX idxname ON tablename ( e x p r e s s i o n ) ; Permitem criar índices sobre o resultado de uma função. Úteis quando queremos fazer pesquisas, não pelo valor de uma coluna, mas sim por o resultado de uma função. Exemplo CREATE INDEX d i f f e r e n c e _ i d x ON t r a n s a c t i o n s ( c r e d i t d e b i t ) ; SELECT FROM t r a n s a c t i o n s WHERE c r e d i t d e b i t > 1000; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 37 / 45

PostgreSQL Índices Sobre Funções Sintaxe CREATE INDEX idxname ON tablename ( e x p r e s s i o n ) ; Permitem criar índices sobre o resultado de uma função. Úteis quando queremos fazer pesquisas, não pelo valor de uma coluna, mas sim por o resultado de uma função. Exemplo CREATE INDEX name_lower_idx ON people ( l o w e r c a s e (name ) ) ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 38 / 45

PostgreSQL Clustering Sintaxe Em PostgreSQL não existem índices clustered. É no entanto possível organizar os tuplos de uma tabela periodicamente de acordo com um índice. Cada tabela só pode estar organizada segundo um índice de cada vez. A operação de clustering faz lock à tabela. CLUSTER tablename USING idxname ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 39 / 45

PostgreSQL Full Text Search Sintaxe Usar índices do tipo gin ou gist. Os índices são índices sobre expressões. Usar a mesma expressão nas perguntas. CREATE INDEX idxname ON tablename USING gin ( t o _ t s v e c t o r ( e n g l i s h, column ) ) ; Sintaxe SELECT FROM tablename WHERE t o _ t s v e c t o r ( e n g l i s h, column ) @@ to_tsquery ( s e a r c h & term ) ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 40 / 45

Full Text Search Ranking PostgreSQL Sintaxe SELECT column, ts_rank ( t o _ t s v e c t o r ( e n g l i s h, column ), to_tsquery ( s e a r c h & term ) ) FROM tablename WHERE t o _ t s v e c t o r ( e n g l i s h, column ) @@ to_tsquery ( s e a r c h & term ) ORDER BY ts_rank ( t o _ t s v e c t o r ( e n g l i s h, column ), to_tsquery ( s e a r c h & term ) ) DESC André Restivo (FEUP) PostgreSQL Performance February 24, 2012 41 / 45

PostgreSQL Explain Sintaxe Mostra o plano que o PostgreSQL pensa utilizar para uma determinada query. Pode não ser o plano efectivamente usado (estatísticas podem estar erradas). EXPLAIN query ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 42 / 45

PostgreSQL Explain Analyze Sintaxe Mostra o plano que o PostgreSQL pensa utilizar para uma determinada query e o realmente utilizado. Executa mesmo a query. EXPLAIN ANALYZE query ; André Restivo (FEUP) PostgreSQL Performance February 24, 2012 43 / 45

Analyze e Explain PostgreSQL Alguns nodos dos planos: Nested Loop Sequential Scan Index Scan Index Condition Aggregate Bitmap Heap Scan Bitmap Index Scan Bitmap And/Or Sort... André Restivo (FEUP) PostgreSQL Performance February 24, 2012 44 / 45

PostgreSQL Reindex, Vacuum e Analyze Sintaxe Comandos que devem ser usados periodicamente: Reindex - Reorganiza um índice. Vaccum - Recupera espaço desperdiçado. Analyze - Calcula estatísticas. REINDEX [ idxname tablename ] ; ANALYZE [ tablename ] ; VACUUM [ANALYZE] [ table ] André Restivo (FEUP) PostgreSQL Performance February 24, 2012 45 / 45