guia de otimização de consultas em postgresql exemplificado com casos reais | Álvaro nunes

16
PGDAY Campinas – 2016 PGDAY Campinas – 2016 PostgreSQL – Otimização PostgreSQL – Otimização

Upload: pgday-campinas

Post on 15-Apr-2017

249 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

PGDAY Campinas – 2016PGDAY Campinas – 2016

PostgreSQL – OtimizaçãoPostgreSQL – Otimização

Page 2: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

ContextualizaçãoContextualização

● Utilização de PostgreSQL desde 2001– 7.2, 7.4, 8.0, 8.2, 9.1, 9.2, 9.4, 9.5 ….

● Cenários distintos– Servidores com um grande BD, replicados

– Servidores com muitos BDs (~ 400), de tamanhosdistintos (entre 20 MB e 10GB) e muitos usuáriossimultâneos, replicados

● ~ 400 tabelas, 180.000 CTRCs emitidos/mês

Page 3: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

ContextualizaçãoContextualização

Page 4: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

O sistema está lento!O sistema está lento!

● Mais Frete– Aproximadamente 3.000 arquivos

● Todos acessam o banco de dados

Quem causa lentidão? ?

– Normalmente consultas● Exceção: cargas de dados

Page 5: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Análise de custo de execuçãoAnálise de custo de execução

● EXPLAIN

– Custo = leitura de páginas de disco

– Analyze: executa efetivamente a consulta● Atenção: teste efetivamente suas alterações

● CTRC

– Conhecimento de Transporte Rodoviário de Carga● CT-e

Page 6: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

ÍndicesÍndices

● Formas de busca– Sequenciais

– Indexadas● Diversos tipos de

índice

● Consultas de 01 a 04

● Custo

– Tempo de criação

– Espaço utilizado● Mulltiplicar por 400

– Nem sempreutilizados

– Consultas 05 a 08

Page 7: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

ÍndicesÍndices

● Otimização de performance– Menor amostra

● Consultas 09 a 12

● Redução de espaço utilizado– Partial index

● Consultas 13 e 14

Page 8: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Ordenação de JOINsOrdenação de JOINs

● A sequencia dos JOINs pode interferir noplano de execução da consulta

– Priorizar tabelas filtradas e/ou indexadas

– Consultas 15 a 18 (vi / vimdiff)

– join_collapse_limit

Page 9: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Uso do WITHUso do WITH

● Similar a uma tabela temporária– Válido por uma consulta

● Substitui – SUBSELECTs no WHERE

– JOINs com grande tabelas ou não indexados

– Consultas 19 a 23

● Não altera pg_attribute

Page 10: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Performance em Instruções SemelhantesPerformance em Instruções Semelhantes

● Instruções semanticamente idênticas podempossuir planos de execução distintos

– Consultas 24 e 25

Page 11: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Window FunctionsWindow Functions

● Evitam sub-SQLs

● Possibilitam ranqueamento,

– Consultas 26 a 29

Page 12: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Outras alternativasOutras alternativas

● Hardware

– Discos

– Memória

– Processador

● Configuração

– work_mem

– statement_timeout

Page 13: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

EstatísticasEstatísticas

● Tabelas mudam– Índices antigos não refletem mais realidade atual

– ANALYZE

● Alterações e exclusões – Não apagam fisicamente

● VACUUM e VACUUM FULL;

● Autovacuum

Page 14: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

HistóricoHistórico● Atua Sistemas de Informação

– Fundada em 2001● Sistemas para Transportadoras (Mais Frete, Mais Frota)● Desenvolvidos em PHP e PostgreSQL● Jaguar

– Infraestrutura de Rede

– Outros sistemas (Mais Contratos, Efesus …)

– Equipe: ~ 40 colaboradores (Set/2016)● Desenvolvimento, Redes, Suporte, Comercial e Adm

● Crescimento

Page 15: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

A AtuaA Atua

Page 16: Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

Dúvidas?Dúvidas?

Álvaro Nunes Melo

[email protected]

www.atua.com.br/vagas/

facebook.com/AtuaSistemas