guia de otimização de consultas em postgresql exemplificado com casos reais | Álvaro nunes
TRANSCRIPT
PGDAY Campinas – 2016PGDAY Campinas – 2016
PostgreSQL – OtimizaçãoPostgreSQL – Otimização
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
ContextualizaçãoContextualização
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
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
Í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
ÍndicesÍndices
● Otimização de performance– Menor amostra
● Consultas 09 a 12
● Redução de espaço utilizado– Partial index
● Consultas 13 e 14
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
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
Performance em Instruções SemelhantesPerformance em Instruções Semelhantes
● Instruções semanticamente idênticas podempossuir planos de execução distintos
– Consultas 24 e 25
Window FunctionsWindow Functions
● Evitam sub-SQLs
● Possibilitam ranqueamento,
– Consultas 26 a 29
Outras alternativasOutras alternativas
● Hardware
– Discos
– Memória
– Processador
● Configuração
– work_mem
– statement_timeout
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
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
A AtuaA Atua
Dúvidas?Dúvidas?
Álvaro Nunes Melo
www.atua.com.br/vagas/
facebook.com/AtuaSistemas