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

Post on 15-Apr-2017

249 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

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

alvaro@atua.com.br

www.atua.com.br/vagas/

facebook.com/AtuaSistemas

top related