SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Analise de performance usando as estatsticas do PostgreSQL 
Matheus de Oliveira 
matheus.oliveira@dextra.com.br 
* Keynote apresentada no PGDay Campinas 2014
Quem sou eu? 
Matheus de Oliveira  Ci^encias de Computac~ao { USP 
 DBA PostgreSQL na Dextra e instrutor na 
Dextraining a mais de 2 anos 
 Apaixonado pelo PG (do psql ao codigo-fonte...) 
2 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Quem sou eu? 
Matheus de Oliveira  Ci^encias de Computac~ao { USP 
 DBA PostgreSQL na Dextra e instrutor na 
Dextraining a mais de 2 anos 
 Apaixonado pelo PG (do psql ao codigo-fonte...) 
 Aplicando atualmente uso de estatsticas no 
pgAnalytics (http://pganalytics.com.br/) 
2 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Quem sou eu? 
Matheus de Oliveira  Ci^encias de Computac~ao { USP 
 DBA PostgreSQL na Dextra e instrutor na 
Dextraining a mais de 2 anos 
 Apaixonado pelo PG (do psql ao codigo-fonte...) 
 Aplicando atualmente uso de estatsticas no 
pgAnalytics (http://pganalytics.com.br/) 
Dextra  Desenvolvimento sob-medida, consultoria/suporte 
 Mais de 15 anos trabalhando com o PostgreSQL 
 Crafting Software, Transforming Business 
 http://www.dextra.com.br/ 
2 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Quem sou eu? 
Matheus de Oliveira  Ci^encias de Computac~ao { USP 
 DBA PostgreSQL na Dextra e instrutor na 
Dextraining a mais de 2 anos 
 Apaixonado pelo PG (do psql ao codigo-fonte...) 
 Aplicando atualmente uso de estatsticas no 
pgAnalytics (http://pganalytics.com.br/) 
Dextra  Desenvolvimento sob-medida, consultoria/suporte 
 Mais de 15 anos trabalhando com o PostgreSQL 
 Crafting Software, Transforming Business 
 http://www.dextra.com.br/ 
Dextraining  Treinamento de verdade, Aprenda com quem faz na 
pratica 
 Mais de 10 anos na estrada 
 Mais de 10 mil pro
ssionais capacitados em todo o 
Brasil. 
 http://www.dextraining.com.br/ 
2 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
We are Hiring 
Interessados: 
recrutamento@dextra.com.br 
http://www.dextra.com.br/carreiras/
Estatsticas do PostgreSQL 
Basicamente 2 tipos de estatsticas: 
 estatsticas de distribuic~ao dos dados 
 estatsticas de analise e monitoramento 
4 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Estatsticas de distribuic~ao de 
dados
It's all about performance... 
 O PostgreSQL prov^e: 
 Mecanismos de cache e
ciente 
 Estruturas de dados e
cientes 
 Diversos metodos de acesso 
6 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
It's all about performance... 
 Para isso, o PostgreSQL precisa de: 
 Mecanismos de cache e
ciente 
 Estruturas de dados e
cientes 
 Diversos metodos de acesso 
7 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
It's all about performance... 
 Para isso, o PostgreSQL precisa de: 
 Mecanismos de cache e
ciente 
 voc^e precisa oferecer recursos e con
gurar para seu uso otimizado 
 Estruturas de dados e
cientes 
 Diversos metodos de acesso 
7 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
It's all about performance... 
 Para isso, o PostgreSQL precisa de: 
 Mecanismos de cache e
ciente 
 voc^e precisa oferecer recursos e con
gurar para seu uso otimizado 
 Estruturas de dados e
cientes 
 voc^e precisa comandar a criac~ao dessas estruturas 
 Diversos metodos de acesso 
7 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
It's all about performance... 
 Para isso, o PostgreSQL precisa de: 
 Mecanismos de cache e
ciente 
 voc^e precisa oferecer recursos e con
gurar para seu uso otimizado 
 Estruturas de dados e
cientes 
 voc^e precisa comandar a criac~ao dessas estruturas 
 Diversos metodos de acesso 
 necessario informac~oes estatsticas sobre os dados para escolha do melhor 
7 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
It's all about performance... 
 Para isso, o PostgreSQL precisa de: 
 Mecanismos de cache e
ciente 
 voc^e precisa oferecer recursos e con
gurar para seu uso otimizado 
 Estruturas de dados e
cientes 
 voc^e precisa comandar a criac~ao dessas estruturas 
 Diversos metodos de acesso 
 necessario informac~oes estatsticas sobre os dados para escolha do melhor 
 voc^e geralmente n~ao precisa se preocupar com isso... :) 
7 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
It's all about performance... 
 Para isso, o PostgreSQL precisa de: 
 Mecanismos de cache e
ciente 
 voc^e precisa oferecer recursos e con
gurar para seu uso otimizado 
 Estruturas de dados e
cientes 
 voc^e precisa comandar a criac~ao dessas estruturas 
 Diversos metodos de acesso 
 necessario informac~oes estatsticas sobre os dados para escolha do melhor 
 voc^e geralmente n~ao precisa se preocupar com isso... :) 
 mas as vezes precisa... : ( 
7 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Indices... Indices... Indices... 
B−tree Tabela: 
1 
8 16 28 
1 7 8 9 12 16 21 25 28 30 32 36 
28 
12 
21 
7 
9 
16 
25 
30 
32 
8 
36 
... 
... 
... 
... 
... 
... 
... 
... 
... 
... 
... 
... 
8 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Indices... Indices... Indices... 
Buscas em ndices s~ao melhores quando: 
 deseja-se encontrar um valor unico ou uma pequena faixa de 
valores 
E n~ao s~ao boas quando: 
 a busca retorna grande parte da tabela 
9 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Indices... Indices... Indices... 
Buscas em ndices s~ao melhores quando: 
 deseja-se encontrar um valor unico ou uma pequena faixa de 
valores 
E n~ao s~ao boas quando: 
 a busca retorna grande parte da tabela 
E como o PostgreSQL sabe qual a proporc~ao de uma tabela a 
consulta ira retornar? 
9 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Histogramas 
10 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Histogramas 
SELECT * FROM vendas 
WHERE dtvenda 
BETWEEN ’2013 -07 -01 ’ 
AND ’2013 -12 -31 ’; 
Pequena porc~ao da tabela 
(= 
4% da tabela): 
usar acesso indexado 
11 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
Histogramas 
SELECT * FROM vendas 
WHERE dtvenda 
BETWEEN ’2014 -01 -01 ’ 
AND ’2014 -06 -31 ’; 
Grande porc~ao da tabela (= 
82% 
da tabela): 
usar acesso sequencial 
12 / 29 
Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014

Mais conteúdo relacionado

Mais procurados

Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLRaul Oliveira
 
PostgreSQL Extensions: A deeper look
PostgreSQL Extensions:  A deeper lookPostgreSQL Extensions:  A deeper look
PostgreSQL Extensions: A deeper lookJignesh Shah
 
PostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active RecordPostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active RecordDavid Roberts
 
PostGreSQL Performance Tuning
PostGreSQL Performance TuningPostGreSQL Performance Tuning
PostGreSQL Performance TuningMaven Logix
 
Getting started with postgresql
Getting started with postgresqlGetting started with postgresql
Getting started with postgresqlbotsplash.com
 
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLJim Mlodgenski
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosJuliano Atanazio
 
PostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesPostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesFernando Ike
 
PostgreSQL HA
PostgreSQL   HAPostgreSQL   HA
PostgreSQL HAharoonm
 
Internals of Speeding up PySpark with Arrow
 Internals of Speeding up PySpark with Arrow Internals of Speeding up PySpark with Arrow
Internals of Speeding up PySpark with ArrowDatabricks
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIMatheus Espanhol
 
Inside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryInside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryEDB
 
Large Table Partitioning with PostgreSQL and Django
 Large Table Partitioning with PostgreSQL and Django Large Table Partitioning with PostgreSQL and Django
Large Table Partitioning with PostgreSQL and DjangoEDB
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Euler Taveira
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLWebinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLSeveralnines
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenPostgresOpen
 
Real-Time Spark: From Interactive Queries to Streaming
Real-Time Spark: From Interactive Queries to StreamingReal-Time Spark: From Interactive Queries to Streaming
Real-Time Spark: From Interactive Queries to StreamingDatabricks
 
Logical Replication in PostgreSQL
Logical Replication in PostgreSQLLogical Replication in PostgreSQL
Logical Replication in PostgreSQLEDB
 

Mais procurados (20)

Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQL
 
PostgreSQL Extensions: A deeper look
PostgreSQL Extensions:  A deeper lookPostgreSQL Extensions:  A deeper look
PostgreSQL Extensions: A deeper look
 
PostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active RecordPostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active Record
 
PostGreSQL Performance Tuning
PostGreSQL Performance TuningPostGreSQL Performance Tuning
PostGreSQL Performance Tuning
 
Getting started with postgresql
Getting started with postgresqlGetting started with postgresql
Getting started with postgresql
 
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de Dados
 
PostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesPostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicações
 
PostgreSQL HA
PostgreSQL   HAPostgreSQL   HA
PostgreSQL HA
 
Backup and-recovery2
Backup and-recovery2Backup and-recovery2
Backup and-recovery2
 
Internals of Speeding up PySpark with Arrow
 Internals of Speeding up PySpark with Arrow Internals of Speeding up PySpark with Arrow
Internals of Speeding up PySpark with Arrow
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
Inside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryInside PostgreSQL Shared Memory
Inside PostgreSQL Shared Memory
 
Large Table Partitioning with PostgreSQL and Django
 Large Table Partitioning with PostgreSQL and Django Large Table Partitioning with PostgreSQL and Django
Large Table Partitioning with PostgreSQL and Django
 
Get to know PostgreSQL!
Get to know PostgreSQL!Get to know PostgreSQL!
Get to know PostgreSQL!
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLWebinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
 
Real-Time Spark: From Interactive Queries to Streaming
Real-Time Spark: From Interactive Queries to StreamingReal-Time Spark: From Interactive Queries to Streaming
Real-Time Spark: From Interactive Queries to Streaming
 
Logical Replication in PostgreSQL
Logical Replication in PostgreSQLLogical Replication in PostgreSQL
Logical Replication in PostgreSQL
 

Destaque

O que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosO que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosMatheus de Oliveira
 
Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanCaio Oliveira
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)Fabrízio Mello
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlLocaweb
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPedro Fernandes Vieira
 
TOP5 - Falsas Suposições de Programadores
TOP5 - Falsas Suposições de ProgramadoresTOP5 - Falsas Suposições de Programadores
TOP5 - Falsas Suposições de ProgramadoresMatheus de Oliveira
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoFabio Telles Rodriguez
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónPGDay Campinas
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Diogo L. V. G. Rubert
 
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...PGDay Campinas
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
 
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 

Destaque (20)

O que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosO que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dados
 
Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o Barman
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sql
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
TOP5 - Falsas Suposições de Programadores
TOP5 - Falsas Suposições de ProgramadoresTOP5 - Falsas Suposições de Programadores
TOP5 - Falsas Suposições de Programadores
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 
Postgres Tuning
Postgres TuningPostgres Tuning
Postgres Tuning
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlib
 
Pgday campinas 2015
Pgday campinas 2015Pgday campinas 2015
Pgday campinas 2015
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia Replicación
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 

Semelhante a Análise de performance usando as estatísticas do PostgreSQL

Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Matheus de Oliveira
 
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...Tchelinux
 
Machine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETMachine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETRenato Haddad
 
Seleção de Features para Ranking
Seleção de Features para RankingSeleção de Features para Ranking
Seleção de Features para Rankingcristnascimento
 
Business Analytics com Tableau Qmeeting 2018
Business Analytics com Tableau Qmeeting 2018Business Analytics com Tableau Qmeeting 2018
Business Analytics com Tableau Qmeeting 2018Roberto Oliveira
 
O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?Ariane Izac
 
Otimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQLOtimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQLJean Pierre Monteiro
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Matheus de Oliveira
 
O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?Ariane Izac
 
5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performance5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performanceAriane Izac
 
Business intelligence x Datamining
Business intelligence x DataminingBusiness intelligence x Datamining
Business intelligence x DataminingLeonardo Holanda
 
Ambiente de recomendação de índices para bancos de dados MySQL
Ambiente de recomendação de índices para bancos de dados MySQLAmbiente de recomendação de índices para bancos de dados MySQL
Ambiente de recomendação de índices para bancos de dados MySQLEduardo Weiland
 
Proposta de projeto: Aplicando Ciência de Dados a livraria Iztaccihuatl
Proposta de projeto: Aplicando Ciência de Dados a livraria IztaccihuatlProposta de projeto: Aplicando Ciência de Dados a livraria Iztaccihuatl
Proposta de projeto: Aplicando Ciência de Dados a livraria Iztaccihuatlsusilene Barbosa
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 

Semelhante a Análise de performance usando as estatísticas do PostgreSQL (20)

Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014
 
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...
Data Mining e Machine Learning com Python - Mateus Grellert - Tchelinux Pelot...
 
Machine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETMachine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NET
 
Seleção de Features para Ranking
Seleção de Features para RankingSeleção de Features para Ranking
Seleção de Features para Ranking
 
Computacao
ComputacaoComputacao
Computacao
 
Business Analytics com Tableau Qmeeting 2018
Business Analytics com Tableau Qmeeting 2018Business Analytics com Tableau Qmeeting 2018
Business Analytics com Tableau Qmeeting 2018
 
Medindo O Desempenho De Processadores
Medindo O Desempenho De ProcessadoresMedindo O Desempenho De Processadores
Medindo O Desempenho De Processadores
 
O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?
 
Otimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQLOtimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQL
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7
 
Aula02
Aula02Aula02
Aula02
 
O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?
 
5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performance5 dicas para estruturar seu teste de performance
5 dicas para estruturar seu teste de performance
 
Business intelligence x Datamining
Business intelligence x DataminingBusiness intelligence x Datamining
Business intelligence x Datamining
 
Ambiente de recomendação de índices para bancos de dados MySQL
Ambiente de recomendação de índices para bancos de dados MySQLAmbiente de recomendação de índices para bancos de dados MySQL
Ambiente de recomendação de índices para bancos de dados MySQL
 
Dfd
DfdDfd
Dfd
 
Proposta de projeto: Aplicando Ciência de Dados a livraria Iztaccihuatl
Proposta de projeto: Aplicando Ciência de Dados a livraria IztaccihuatlProposta de projeto: Aplicando Ciência de Dados a livraria Iztaccihuatl
Proposta de projeto: Aplicando Ciência de Dados a livraria Iztaccihuatl
 
O ambiente PSPP
O ambiente PSPPO ambiente PSPP
O ambiente PSPP
 
Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 

Último

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Análise de performance usando as estatísticas do PostgreSQL

  • 1. Analise de performance usando as estatsticas do PostgreSQL Matheus de Oliveira matheus.oliveira@dextra.com.br * Keynote apresentada no PGDay Campinas 2014
  • 2. Quem sou eu? Matheus de Oliveira Ci^encias de Computac~ao { USP DBA PostgreSQL na Dextra e instrutor na Dextraining a mais de 2 anos Apaixonado pelo PG (do psql ao codigo-fonte...) 2 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 3. Quem sou eu? Matheus de Oliveira Ci^encias de Computac~ao { USP DBA PostgreSQL na Dextra e instrutor na Dextraining a mais de 2 anos Apaixonado pelo PG (do psql ao codigo-fonte...) Aplicando atualmente uso de estatsticas no pgAnalytics (http://pganalytics.com.br/) 2 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 4. Quem sou eu? Matheus de Oliveira Ci^encias de Computac~ao { USP DBA PostgreSQL na Dextra e instrutor na Dextraining a mais de 2 anos Apaixonado pelo PG (do psql ao codigo-fonte...) Aplicando atualmente uso de estatsticas no pgAnalytics (http://pganalytics.com.br/) Dextra Desenvolvimento sob-medida, consultoria/suporte Mais de 15 anos trabalhando com o PostgreSQL Crafting Software, Transforming Business http://www.dextra.com.br/ 2 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 5. Quem sou eu? Matheus de Oliveira Ci^encias de Computac~ao { USP DBA PostgreSQL na Dextra e instrutor na Dextraining a mais de 2 anos Apaixonado pelo PG (do psql ao codigo-fonte...) Aplicando atualmente uso de estatsticas no pgAnalytics (http://pganalytics.com.br/) Dextra Desenvolvimento sob-medida, consultoria/suporte Mais de 15 anos trabalhando com o PostgreSQL Crafting Software, Transforming Business http://www.dextra.com.br/ Dextraining Treinamento de verdade, Aprenda com quem faz na pratica Mais de 10 anos na estrada Mais de 10 mil pro
  • 6. ssionais capacitados em todo o Brasil. http://www.dextraining.com.br/ 2 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 7. We are Hiring Interessados: recrutamento@dextra.com.br http://www.dextra.com.br/carreiras/
  • 8. Estatsticas do PostgreSQL Basicamente 2 tipos de estatsticas: estatsticas de distribuic~ao dos dados estatsticas de analise e monitoramento 4 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 10. It's all about performance... O PostgreSQL prov^e: Mecanismos de cache e
  • 11. ciente Estruturas de dados e
  • 12. cientes Diversos metodos de acesso 6 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 13. It's all about performance... Para isso, o PostgreSQL precisa de: Mecanismos de cache e
  • 14. ciente Estruturas de dados e
  • 15. cientes Diversos metodos de acesso 7 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 16. It's all about performance... Para isso, o PostgreSQL precisa de: Mecanismos de cache e
  • 17. ciente voc^e precisa oferecer recursos e con
  • 18. gurar para seu uso otimizado Estruturas de dados e
  • 19. cientes Diversos metodos de acesso 7 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 20. It's all about performance... Para isso, o PostgreSQL precisa de: Mecanismos de cache e
  • 21. ciente voc^e precisa oferecer recursos e con
  • 22. gurar para seu uso otimizado Estruturas de dados e
  • 23. cientes voc^e precisa comandar a criac~ao dessas estruturas Diversos metodos de acesso 7 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 24. It's all about performance... Para isso, o PostgreSQL precisa de: Mecanismos de cache e
  • 25. ciente voc^e precisa oferecer recursos e con
  • 26. gurar para seu uso otimizado Estruturas de dados e
  • 27. cientes voc^e precisa comandar a criac~ao dessas estruturas Diversos metodos de acesso necessario informac~oes estatsticas sobre os dados para escolha do melhor 7 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 28. It's all about performance... Para isso, o PostgreSQL precisa de: Mecanismos de cache e
  • 29. ciente voc^e precisa oferecer recursos e con
  • 30. gurar para seu uso otimizado Estruturas de dados e
  • 31. cientes voc^e precisa comandar a criac~ao dessas estruturas Diversos metodos de acesso necessario informac~oes estatsticas sobre os dados para escolha do melhor voc^e geralmente n~ao precisa se preocupar com isso... :) 7 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 32. It's all about performance... Para isso, o PostgreSQL precisa de: Mecanismos de cache e
  • 33. ciente voc^e precisa oferecer recursos e con
  • 34. gurar para seu uso otimizado Estruturas de dados e
  • 35. cientes voc^e precisa comandar a criac~ao dessas estruturas Diversos metodos de acesso necessario informac~oes estatsticas sobre os dados para escolha do melhor voc^e geralmente n~ao precisa se preocupar com isso... :) mas as vezes precisa... : ( 7 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 36. Indices... Indices... Indices... B−tree Tabela: 1 8 16 28 1 7 8 9 12 16 21 25 28 30 32 36 28 12 21 7 9 16 25 30 32 8 36 ... ... ... ... ... ... ... ... ... ... ... ... 8 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 37. Indices... Indices... Indices... Buscas em ndices s~ao melhores quando: deseja-se encontrar um valor unico ou uma pequena faixa de valores E n~ao s~ao boas quando: a busca retorna grande parte da tabela 9 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 38. Indices... Indices... Indices... Buscas em ndices s~ao melhores quando: deseja-se encontrar um valor unico ou uma pequena faixa de valores E n~ao s~ao boas quando: a busca retorna grande parte da tabela E como o PostgreSQL sabe qual a proporc~ao de uma tabela a consulta ira retornar? 9 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 39. Histogramas 10 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 40. Histogramas SELECT * FROM vendas WHERE dtvenda BETWEEN ’2013 -07 -01 ’ AND ’2013 -12 -31 ’; Pequena porc~ao da tabela (= 4% da tabela): usar acesso indexado 11 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 41. Histogramas SELECT * FROM vendas WHERE dtvenda BETWEEN ’2014 -01 -01 ’ AND ’2014 -06 -31 ’; Grande porc~ao da tabela (= 82% da tabela): usar acesso sequencial 12 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 42. Outras Informac~oes Alem dos histogramas { pg stats.histogram bounds 1 {, s~ao armazenadas outras estatsticas, como: Seletividade dos atributos (numero de elementos distintos) { pg stats.n distinct Correlac~ao dos atributos (ordenac~ao fsica) { pg stats.correlation Atributos mais comuns { pg stats.most common * Media de tamanho dos atributos { pg stats.avg width Entre outras... 1OBS: o histograma do PostgreSQL e um pouco diferente do apresentado aqui, mas segue a mesma ideia 13 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 43. Estatsticas do PostgreSQL Estatsticas da distribuic~ao dos dados: 14 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 44. Estatsticas do PostgreSQL Estatsticas da distribuic~ao dos dados: s~ao atualizadas sob demanda pelo autovacuum (voc^e n~ao precisa fazer isso) armazenadas na tabela de catalogo pg statistic (use a view pg stats para consultar) utilizadas pelo planejador de consultas se
  • 45. carem desatualizadas podem degradar a performance do sistema drasticamente 14 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 46. Estatsticas para Analise e Monitoramento
  • 47. Estatsticas para Analise e Monitoramento Durante operac~ao, os processos incrementam contadores e medidores de tempo das operac~oes realizadas (numero de tuplas inseridas numa tabela, tempo de escrita dos dados em disco, utilizac~ao de um ndice, etc.) Cada processo envia essas informac~oes via comunicac~ao UDP para o stats collector O stats collector armazena esses dados em estruturas especiais O resultado sumarizado dessas informac~oes est~ao presentes para consulta em views especiais, nomeadas pg stat * e pg statio * 16 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 48. Veri
  • 49. cac~ao do uso de memoria Veri
  • 50. cac~ao de uso de cache pela pg stat database: = SELECT sum ( blks_hit ) / - sum (( blks_read + blks_hit ):: numeric ) - FROM pg_stat_database - WHERE blks_read + blks_hit 0; cache_ratio -- ---------------------- 0.73245583731133246875 (1 row ) Valores muito baixo podem indicar pouca memoria para shared buffers 17 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 51. Veri
  • 52. cac~ao do processo de CHECKPOINTs Veri
  • 53. cando escrita de buers pelo processo checkpointer VS backends pg stat bgwriter: = SELECT buffers_checkpoint / - ( buffers_checkpoint + buffers_backend ) - :: numeric AS checkpointer_ratio - FROM pg_stat_bgwriter ; checkpointer_ratio -- ------------------ 0.923462373 (1 row ) Buscamos um valor mais alto (sendo 1; 0 a taxa ideal), valores proximos a 0; 0 podem indicar a necessidade de forcar mais CHECKPOINTs ou aumentar a shared buffers 18 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 54. Veri
  • 55. cac~ao do processo de CHECKPOINT Veri
  • 56. cac~ao das requisic~oes de CHECKPOINT pela pg stat bgwriter: = SELECT checkpoints_timed / - ( checkpoints_timed + checkpoints_req ) - :: numeric AS timed_ratio - FROM pg_stat_bgwriter ; timed_ratio -- ----------- 0.769053117 (1 row ) Tambem buscamos taxas proximas a 1; 0, sendo que valores muito baixos podem indicar necessidade de aumento do par^ametro checkpoint segments ou reduc~ao do checkpoint timeout 19 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 57. Utilizac~ao de Arquivos Temporarios Tambem utilizando a pg stat database, podemos ver o tamanho de arquivos temporarios gerados: = SELECT pg_size_pretty (sum ( temp_bytes )) - AS size - FROM pg_stat_database ; size -- ------- 2500 MB (1 row ) Utilizac~ao de arquivos temporarios degenera a performance, pode ser preciso aumentar o work mem 20 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 58. Veri
  • 59. cac~ao de Tabelas com Muito Seq-Scans Usando a vis~ao pg stat user tables: = SELECT relname , seq_scan , idx_scan - FROM pg_stat_user_tables - ORDER BY seq_scan DESC LIMIT 10; relname | seq_scan | idx_scan -- -------+----------+---------- vendas | 5586 | 0 cidades | 84 | 826 ... Que tal olhar com carinho as consultas dessas tabelas? Mas lembre-se, para tabelas pequenas ou consultas que trazem grandes porc~oes da tabela seq-scan n~ao e ruim 21 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 60. Veri
  • 61. cac~ao de Indices N~ao Utilizados Para informac~oes de ndices espec
  • 62. cos usamos a pg stat user indexes: = SELECT relname , indexrelname - FROM pg_stat_user_indexes - WHERE idx_scan = 0; relname | indexrelname -- -------+-------------------- vendas | vendas_total_idx vendas | vendas_empresa_idx ... Indices n~ao utilizados, muitas vezes podem ser removidos. Mas nem sempre! 22 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 63. Nem tudo s~ao ores... Como fazer a analise dessas estatsticas apenas num dado perodo? 23 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 64. Nem tudo s~ao ores... Como fazer a analise dessas estatsticas apenas num dado perodo? Elas s~ao incrementais, logo englobam um grande perodo de tempo: = SELECT stats_reset FROM pg_stat_database - WHERE datname = current_database (); stats_reset -- ----------------------------- 2014 -04 -28 01:56:51.790651 -03 (1 row) 23 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 65. Reinicializac~ao das Estatsticas Estatsticas s~ao zeradas quando: uma queda do sistema acontece (ou stop immediate e usado) e feita a chamada das func~oes pg stat reset e pg stat reset shared 24 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 66. Reinicializac~ao das Estatsticas Estatsticas s~ao zeradas quando: uma queda do sistema acontece (ou stop immediate e usado) e feita a chamada das func~oes pg stat reset e pg stat reset shared Reiniciar as estatsticas inviabiliza a operac~ao plena do autovacuum 24 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 67. Soluc~oes... Salvar snapshot de estatsticas: = CREATE TABLE stat_bgwriter_20140910 - AS SELECT * FROM pg_stat_bgwriter ; = CREATE TABLE stat_database_20140910 - AS SELECT * FROM pg_stat_database ; 25 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 68. Soluc~oes... Apenas essas estatsticas n~ao v~ao ser su
  • 70. cac~ao dos comandos SQL executados no banco de dados: buscar consultas direto da aplicac~ao :/ modulo pg stat statement uso de analise de logs (pg log/) Informac~oes historicas (snapshots, gra
  • 71. cos, etc.) Controle das alterac~oes realizadas no ambiente 26 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 73. Resumo das Estatsticas pg statistic pg stat * / pg statio * Quem? manualmente autovacuum todos os processos Quando? manualmente sob-demanda o tempo todo Como? INSERT, UPDATE, DELETE UDP para o stats collector Onde? tabela pg statistic arquivo(s) no diretorio $PGDATA/pg stat Pra qu^e? planejador de consul-tas autovacuum, monitoramento, analise 28 / 29 Analise de performance usando as estatsticas do PostgreSQL { Matheus de Oliveira { PGDay Campinas 2014
  • 74. Obrigado! Duvidas? Matheus de Oliveira matheus.oliveira@dextra.com.br IRC { irc.freenode.net: /join #postgresql,#postgresql-br,#dextra Meu nick: MatheusOl Twitter: @matioli matheus LinkedIn: br.linkedin.com/in/matheusdeoliveira/ SlideShare: slideshare.net/matheus de oliveira