PostgreSQL Troubleshooting e Monitoramento

Documentos relacionados
Treinamento PostgreSQL - Aula 07

PostgreSQL Troubleshooting e Monitoramento

Treinamento PostgreSQL - Aula 01

Treinamento PostgreSQL - Aula 09

O Modelo e a Álgebra Relacional

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Sistemas de Gerência de Bancos de Dados. Módulo 1 - Armazenamento

OTIMIZAÇÃO DE CONSULTAS - MYSQL. Prof. Antonio Almeida de Barros Junior

PostgreSQL Performance

NoSQL Apache Cassandra para DBAs. Conceitos básicos que todo DBA deve conhecer sobre Apache Cassandra.

Configurações de performance no SQL Server José Antônio da Cunha CEFET-RN

Catálogo de Treinamentos 2016

Veeam Endpoint Backup FREE

Administração de Sistemas Operacionais. Prof. Marlon Marcon

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

Bancos de Dados IV. Tuning de Bancos de Dados. Rogério Costa

Técnico de Gestão e Programação de Sistemas Informáticos

Gerência de memória III

Formação de DBAs SQL Server 2008

Administração de Redes em Software Livre Aula 02 Instalando o GNU/Linux (CENTOS Minimal)

Sistemas de arquivos

Backup. José Antônio da Cunha CEFET-RN

Banco de Dados. Perspectiva Histórica dos Bancos de Dados. Prof. Walteno Martins Parreira Jr

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

ADMINISTRAÇÃO DE BANCOS DE DADOS DO MICROSOFT SQL SERVER

Resolução dos exercícios da lista BD01

DDL). O resultado da compilação dos parâmetros DDLs é

Desmistificando Replicação no PostgreSQL

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Administração Central Cetec Capacitações Capacitação Sistema Operacional Linux Semana III

Administração de Banco de Dados

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

Hardware - Processador

Processamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Este é o segundo modulo, nele abordaremos os métodos de gerenciamento do Windows Server 2008.

Aula 05. Fundamentos de Hardware e Software. Prof. Dr. Dilermando Piva Jr.

Organização de Arquivos

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

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45

Caracterização de Sistemas Distribuídos

BANCO DE DADOS. Introdução. Prof. Marcelo Machado Cunha

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

Administração Sistemas Operacionais de Rede

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

Treinamento PostgreSQL - Aula 03

Requisitos de Ambiente para Central SAVER OmniLink

UNIVERSIDADE ESTADUAL DO PARÁ UEPA LISTA DE EXERCÍCIOS DE INTRODUÇÃO A COMPUTAÇÃO. 2. O que diferencia os computadores de 1ª geração dos da 2ª.

Sistemas Operacionais. Rodrigo Rubira Branco

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

ORACLE IN-MEMORY 12c. Vantagens e Cenários de Utilização do Oracle In-Memory 12c. Willian Frasson

TOP 20 ROTINAS QUE VOCÊ PODE AUTOMATIZAR HOJE!

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

SISTEMAS DE ARQUIVOS E DIRETÓRIOS DO LINUX. Prof. Gleison Batista de Sousa

Uma abordagem prática de tuning em banco de dados, usando PostgreSQL

AUMENTO DE PERFORMANCE POR MEIO DA OTIMIZAÇÃO DE BANCO DE DADOS

Subsistemas de E/S Device Driver Controlador de E/S Dispositivos de E/S Discos Magnéticos Desempenho, redundância, proteção de dados

Computadores e Programação (DCC/UFRJ)

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO SISTEMA OPERACIONAL: PROCESSOS E ARQUIVOS PROFESSOR CARLOS MUNIZ

Otimização e Execução de Consultas Caso Centralizado Parse Query

Banco de Dados. Professor: Marcelo Machado Cunha IFS Campus Aracaju

Sistema Operacionais II. Aula: Virtualização

Profa. Leda G. F. Bueno

ICET CURSO: Ciência da Computação e Sistemas de Informação (Sistemas Operacionais Abertos) Estudos Disciplinares. Campus: Data: / / Nome: Questão 1:

Sistemas Operacionais de Redes Windows. Ricardo Kléber

Banco de Dados II. Administração do SGBD Oracle. Tablespaces, usuários, privilégios, papéis e perfis. Gustavo Dibbern Piva

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Administração e Optimização de BDs

Cap. 1 Arquitectura de Sistemas de Bases de Dados

Banco de Dados. Prof. Antonio

Arquitetura de Computadores. Infraestrutura de TI: Hardware

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Sistemas Operacionais. Interrupção e Exceção

4 Testes e experimentos realizados 4.1. Implementação e banco de dados

Perguntas e respostas

Estrutura do Sistema Operacional

SSC510 Arquitetura de Computadores 1ª AULA

Manual de backup do banco de dados PostgreSQL - Versão 2. Setembro-2011

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Introdução à Banco de Dados

Introdução à Informática

LISTA DE EXERCÍCIOS 02

Gerência de Configuração: Terminologia. Leonardo Gresta Paulino Murta

Lista - RAID. c) Redundância d) Capacidade

Transcrição:

PostgreSQL Troubleshooting e Monitoramento Eduardo Ferreira dos Santos Dataprev Empresa de Tecnologia e Informações da Previdência Social eduardosantos@previdencia.gov.br eduardosan.wordpress.com 22 de Setembro de 2011 Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 1 / 51

Para começar Banco de dados não é para amadores. O Sistema Operacional pode ser o melhor amigo (ou inimigo) do DBA. Especicar corretamente o hardware DEVE ser trabalho do DBA, pois é extremamente importante. Os riscos dos erros do DBA são sempre maiores. Aprenda a conviver com o conservadorismo. Estudar é importante, mas para um DBA é muito mais importante! Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 2 / 51

Sumário 1 Monitoramento Introdução Processador Memória Principal Memória secundária Ferramentas de monitoramento 2 Troubleshooting Introdução Tipos de problema 3 Administração assistida(?) 4 Referências Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 3 / 51

Monitoramento 1 Monitoramento Introdução Processador Memória Principal Memória secundária Ferramentas de monitoramento 2 Troubleshooting Introdução Tipos de problema 3 Administração assistida(?) 4 Referências Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 4 / 51

Monitoramento Introdução Um pouco de história 1985 Primeiro desenho de um possível sistema de armazenamento (ainda projeto Postgres) na universidade de Berkeley, Califórnia [Stonebreaker and Rowe, 1985] 1987 Primeira modelagem [Stonebreaker and Rowe, 1987] 1989 Denição do primeiro sistema de regras [Stonebreaker et al., 1989] Fim da fase acadêmica 1993 Empresa Illustra transforma parte do código em um produto comercial. Mais tarde a empresa se tornaria Informix, até ser comprada pela IBM 1993 Desenvolvimento de uma versão paralela pela comunidade (principalmente universidades) e novo nome: PostgreSQL Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 5 / 51

Monitoramento Introdução Conceitos principais Foco em teorias para manipulação e armazenamento de dados; O principal objetivo é fazer o melhor banco de dados; O objetivo é chegar onde nenhum outro elefante jamais esteve: new features, melhor performance e mais conabilidade. Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 6 / 51

Monitoramento Introdução Entendendo o SGBD Como o PostgreSQL utiliza o processador? Como é a utilização da memória? Como é o consumo de disco? Como o SO pode ser otimizado? Como identicar os componentes externos? Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 7 / 51

Monitoramento Introdução Entendendo o SGBD ([Momjian, 2010]) Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 8 / 51

Monitoramento Introdução Entendendo o SGBD Hardware: Processador Memória principal Memória secundária Sistema operacional e seus subsistemas (principalmente o kernel); Sistema de execução de consultas; Processamento de transações; Armazenamento. Empresa PostgreSQL de Tecnologia Troubleshooting e Informações e Monitoramento22 da Previdência de Setembro Social eduardosantos@previde de 2011 9 / 51

Monitoramento Processador Processador O caminho de uma consulta [PostgreSQL, 2010]: 1 A conexão de uma aplicação ao servidor PostgreSQL deve ser estabelecida. O programa transmite a consulta ao servidor e espera pelos resultados; 2 O estágio de parser verica se a consulta possui a sintaxe correta e cria uma árvore de consulta; 3 O sistema de reescrita recebe a àrvore criada criada pelo parser e busca quaisquer regras (armazenadas no catálogo do sistema) que possam ser aplicadas à árvore. São então realizadas as transformações fornecidas pelas regras. Uma das funções do sistema de reescrita é na realização de visões (views). Todas as vezes em que uma consulta em uma visão (ou uma tabela virtual) é realizada, o sistema de reescrita altera a consulta para outra que acessa as tabelas base fornecidas em sua denição. 2011 10 / 51

Monitoramento Processador Processador O caminho de uma consulta [PostgreSQL, 2010]: 4 O otimizador recebe a árvore de consulta (possivelmente reescrita) e cria um plano de execução que será a entrada do executor. 5 O plano é criado através da criação de todos os possíveis caminhos que levam ao resultado. (...) O caminho mais barato (mais rápido) é expandido em um plano completo que o executor pode utilizar. 6 O Executor caminha recursivamente através da árvore e busca as linhas no formato representado pelo plano de execução. O executor utiliza então o sistema de armazenamento enquanto está vericando relações, fazendo ordenações (sorts) e junções (joins), avalia as qualicações e nalmente envia as linhas encontradas. 2011 11 / 51

Monitoramento Processador Processador O bom DBA entende suas consultas e conhece a melhor forma de otimizá-la. EXPLAIN ANALYZE é seu amigo! ts_rank_cd ( t o _ t s v e c t o r ( aslm. name ' ' a r l m. name ' ' a s r l m. nam SELECT d i s t i n c t lm. landmark_id, lm. name, FROM lm_landmarks lm, ac_state_language_map aslm, ac_ regions ar, ac_region_language_map arlm, ac_sub_regions asr, ac_sub_region_language_map asrlm, p l a i n t o _ t s q u e r y ( ' B a r c e l o n a ' ) q u e r y WHERE aslm. s t a t e _ i d = lm. s t a t e _ i d AND a r. s t a t e _ i d = lm. s t a t e _ i d AND a r l m. r e g i o n _ i d = a r. r e g i o n _ i d AND a s r. r e g i o n _ i d = a r. r e g i o n _ i d AND a s r. sub_region_id = asrlm. sub_region_id AND q u e r y @@ t o _ t s v e c t o r ( aslm. name ' ' a r l m. name ' ' a s r l m. name ) ORDER BY r a n k DESC ; 2011 12 / 51

Monitoramento Processador Processador A consulta é lentíssima! Como sabemos o que consome de processador? EXPLAIN ANALYZE SELECT d i s t i n c t lm. landmark_id, lm. name, ts_rank_cd ( t o _ t s v e c t o r ( aslm. name ' ' a r l m. name ' ' a s r l m. nam FROM lm_landmarks lm, ac_state_language_map aslm, ac_ regions ar, ac_region_language_map arlm, ac_sub_regions asr, ac_sub_region_language_map asrlm, p l a i n t o _ t s q u e r y ( ' B a r c e l o n a ' ) q u e r y WHERE aslm. s t a t e _ i d = lm. s t a t e _ i d AND a r. s t a t e _ i d = lm. s t a t e _ i d AND a r l m. r e g i o n _ i d = a r. r e g i o n _ i d AND a s r. r e g i o n _ i d = a r. r e g i o n _ i d AND a s r. sub_region_id = asrlm. sub_region_id AND q u e r y @@ t o _ t s v e c t o r ( aslm. name ' ' a r l m. name ' ' a s r l m. name ) ORDER BY r a n k DESC ; 2011 13 / 51

Monitoramento Processador Resultados Unique ( c o s t = 7 2 0 4 9. 6 9.. 7 2 0 6 5. 2 7 rows =1558 w i d t h =86) ( a c t u a l t i m e = 6 1 2 4 8. 9 1 8.. 6 2 5 3 7. > S o r t ( c o s t = 7 2 0 4 9. 6 9.. 7 2 0 5 3. 5 8 rows =1558 w i d t h =86) ( a c t u a l t i m e = 6 1 2 4 8. 9 1 3.. 6 1 S o r t Key : ( ts_rank_cd ( t o _ t s v e c t o r ( ( ( ( ( ( aslm. name ) : : t e x t ' ' : : t e x t ) ( a q u e r y. q u e r y ) ), lm. landmark_id, lm. name S o r t Method : e x t e r n a l merge D i s k : 15544kB > Nested Loop ( c o s t = 6 0 1 9. 0 9.. 7 1 9 6 7. 0 7 rows =1558 w i d t h =86) ( a c t u a l t i m e = J o i n F i l t e r : ( q u e r y. q u e r y @@ t o _ t s v e c t o r ( ( ( ( ( ( aslm. name ) : : t e x t ' ' me ) : : t e x t ) ) ) > F u n c t i o n Scan on p l a i n t o _ t s q u e r y q u e r y ( c o s t = 0. 0 0.. 0. 0 1 rows=1 w > Merge J o i n ( c o s t = 6 0 1 9. 0 9.. 3 2 9 8 9. 4 4 rows =1558170 w i d t h =54) ( a c t u a (... ) Total runtime : 62546.280 ms (35 rows ) 2011 14 / 51

Monitoramento Processador Monitoramento Pergunta de 1 milhão de dólares: Como saber se o meu banco de dados precisa de otimização? duardo Ferreira dos Santos (Dataprev 2011 15 / 51

Monitoramento Processador Monitoramento Pergunta de 1 milhão de dólares: Como saber se o meu banco de dados precisa de otimização? Resposta: duardo Ferreira dos Santos (Dataprev 2011 15 / 51

Monitoramento Processador Monitoramento Pergunta de 1 milhão de dólares: Como saber se o meu banco de dados precisa de otimização? Resposta: Depende! duardo Ferreira dos Santos (Dataprev 2011 15 / 51

Monitoramento Processador Monitoramento Pergunta de 1 milhão de dólares: Como saber se o meu banco de dados precisa de otimização? Resposta: Depende! O que é lento pra você? Lentidão x Consumo de recursos de máquina Lembrete: usuários de Windows comumente culpam seus computadores quando há alguma lentidão em seu SO. E em bancos de dados? E no PostgreSQL? duardo Ferreira dos Santos (Dataprev 2011 15 / 51

Monitoramento Processador Ferramentas de monitoramento 2011 16 / 51

Monitoramento Memória Principal Memória principal O que são os danados dos shared_buers? max_connections Maldito swap do inferno!!! Como monitorar a memória? 2011 17 / 51

Monitoramento Memória Principal Memória Principal Por que estou preocupado com a memória? duardo Ferreira dos Santos (Dataprev 2011 18 / 51

Monitoramento Memória Principal Memória Principal Por que estou preocupado com a memória? Resposta: porque o banco de dados está lento duardo Ferreira dos Santos (Dataprev 2011 18 / 51

Monitoramento Memória Principal Memória Principal Por que estou preocupado com a memória? Resposta: porque o banco de dados está lento No caso de lentidão do banco de dados, quase sempre culpamos a memória. Agora que conhecemos o PostgreSQL, somos capazes de indenticar se o problema está na memória? 2011 18 / 51

Monitoramento Memória Principal Memória Principal [Momjian, 2010] 2011 19 / 51

Monitoramento Memória Principal Memória Principal É muito difícil descobrir quanto de memória cada consulta utiliza; O primeiro passo para otimizar a performance é alterar os shared_buers; Uma conguração correta de shared_buers é o que mais afeta o tempo de resposta do banco. Qual valor colocar? 2011 20 / 51

Monitoramento Memória Principal Memória Principal É muito difícil descobrir quanto de memória cada consulta utiliza; O primeiro passo para otimizar a performance é alterar os shared_buers; Uma conguração correta de shared_buers é o que mais afeta o tempo de resposta do banco. Qual valor colocar? Não existe receita mágica, mas normalmente deve ser algo entre 25% e 40% da memória disponível. 2011 20 / 51

Monitoramento Memória Principal Memória Principal É muito difícil descobrir quanto de memória cada consulta utiliza; O primeiro passo para otimizar a performance é alterar os shared_buers; Uma conguração correta de shared_buers é o que mais afeta o tempo de resposta do banco. Qual valor colocar? Não existe receita mágica, mas normalmente deve ser algo entre 25% e 40% da memória disponível. Como monitorar? 2011 20 / 51

Monitoramento Memória Principal Memória Principal É muito difícil descobrir quanto de memória cada consulta utiliza; O primeiro passo para otimizar a performance é alterar os shared_buers; Uma conguração correta de shared_buers é o que mais afeta o tempo de resposta do banco. Qual valor colocar? Não existe receita mágica, mas normalmente deve ser algo entre 25% e 40% da memória disponível. Como monitorar? Observe se cou mais rápido; Utilize o pg_bench, que falaremos mais à frente. 2011 20 / 51

Monitoramento Memória secundária Memória secundária Utilização dos sistemas de arquivos para realização das consultas (Veja 4) WAL Divisão em pequenos arquivos - Método TOAST 2011 21 / 51

Monitoramento Memória secundária Memória secundária [Momjian, 2010] 2011 22 / 51

Monitoramento Memória secundária O método TOAST Por conceito, uma tupla não pode car em mais de uma página no sistema de arquivos Cada página tem no máximo 8k 1 Para registros muito grandes podem acontecer problemas de alocação Método TOAST 2 : os registros são então comprimidos e divididos em várias linhas 1 Pode ser alterado na compilação do banco 2 The best thing since slice bread 2011 23 / 51

Monitoramento Memória secundária Implementação do método TOAST Registros de tamanho variável Os primeiros 32 bits contêm o tamanho do registro em bytes Os dois primeiros bits são reservados e tratados da seguinte forma 00 Valor armazenado sem a aplicação de TOAST 10 O valor armazenado possui cabeçalho (header) de um único byte; o restante representa o total do valor armazenado. 3 01 Dados comprimidos e precisam ser descomprimidos antes de serem utilizados 11 Os valores não possuem nenhum limite particular 3 Se todos os registros restantes forem 0 o valor é um ponteiro para os dados armazenados em outra tabela TOAST 2011 24 / 51

Monitoramento Memória secundária Memória secundária Para os casos de: Melhores tipos de disco Opções de storage Consulte: http: //www.midstorm.org/~telles/2008/07/25/postgresql-discos-cia/ 2011 25 / 51

Monitoramento Memória secundária Monitorando o disco Monitorar o disco pode ser um grande desao para o DBA. A maior parte das ferramentas não dá um número de carga do disco. Métrica mais eciente: load average e blocks in - blocks out. L i n u x 2.6.26 1 amd64 ( nodo406. l a b c l u s t e r ) 10 11 2010 _x86_64_ avg cpu : %u s e r %n i c e %s y s t e m %i o w a i t %s t e a l %i d l e 3,11 0,01 0,25 0,51 0,00 96,11 Device : tps Blk_read / s Blk_wrtn / s Blk_read Blk_wrtn sda 24,66 579,87 376,06 767062533 497455345 sda1 0,00 0,01 0,01 14243 11816 sda2 0,60 1,50 6,36 1983346 8407064 sda3 24,06 578,36 369,69 765064592 489036465 2011 26 / 51

Monitoramento Memória secundária Monitorando o disco Load Average acima de 3 e baixo processamento indica sinais de problema com o disco. Relação bi - bo acima de 100: o banco vai travar!!! O comando iostat mostra o TPS (transações por segundo no disco). Se o número de transações estiver alto e bi - bo estiver crescendo, há problemas no banco. MUITO IMPORTANTE: Consultas também utilizam o disco, e não somente operações de escrita. Leiam novamente o Método TOAST. 2011 27 / 51

Monitoramento Ferramentas de monitoramento Ferramentas de monitoramento O log é seu melhor amigo O SO precisa mostrar informações relevantes É possível monitorar a execução diretamente no banco 2011 28 / 51

Monitoramento Ferramentas de monitoramento A bíblia do monitoramento direto no banco [Momjian, 2010] 2011 29 / 51

Monitoramento Ferramentas de monitoramento pg_bench Muito similar ao método de tentativa e erro: simula carga no banco para vericar a performance; IMPORTANTE: Não se deve usar o pg_bench para comparar tempo de resposta entre diferentes ambientes. O tempo varia com muitas variáveis e o resultado não é preciso; O pg_bench deve ser utilizado em várias interações incrementais para monitorar ajustes no mesmo ambiente. Exemplo: 1 Executo o pg_pench; 2 Anoto os resultados; 3 Altero os shared_buers; 4 Comparo os resultados. 2011 30 / 51

Monitoramento Ferramentas de monitoramento Exemplos de pg_pench P o s t g r e s q l. c o n f : max_connections = 250 s h a r e d _ b u f f e r s = 3000MB #t e m p _ b u f f e r s = 8MB #m a x _ p r e p a r e d _ t r a n s a c t i o n s = 5 work_mem = 256MB maintenance_work_mem = 512MB #max_stack_depth = 2MB pgbench c50 t100 maquina2 = 117 t p s 2011 31 / 51

Troubleshooting 1 Monitoramento Introdução Processador Memória Principal Memória secundária Ferramentas de monitoramento 2 Troubleshooting Introdução Tipos de problema 3 Administração assistida(?) 4 Referências 2011 32 / 51

Troubleshooting Introdução O que é um problema? Lentidão? Indisponibilidade momentânea? Indisponibilidade prolongada? Perda de dados? (PERIGO!!!) 2011 33 / 51

Troubleshooting Introdução O que é um problema? Faz parte do trabalho do DBA identicar com o responsável pelo negócio o que é um problema; A identicação de um problema deve vir acompanhada de um planejamento em caso de catástrofe; Tenham em mente a máxima da computação: Shit Happens!!! Nenhum sistema é imune a falhas; Tristemente, só em casos de catástrofe nosso trabalho é valorizado. 2011 34 / 51

Troubleshooting Tipos de problema Lentidão O que está lento? Consulta demorando muito? Demorando para conseguir uma nova conexão? Conheça o banco e saiba identicar pontos de lentidão. pg \ _stat \ _get \ _backend \ _dbid ( s. backendid ) = d. oid pg \ _stat \ _get \ _backend spb=# \d pg \ _stat \ _ a c t i v i t y V i s a o " pg \ _ c a t a l o g. pg \ _stat \ _ a c t i v i t y " Coluna Tipo M o d i f i c a d o r e s + + d a t i d o i d datname name p r o c p i d i n t e g e r u s e s y s i d o i d usename name c u r r e n t \ _query t e x t w a i t i n g b o o l e a n query \ _ start timestamp with t i m e zone backend \ _ start timestamp with t i m e zone c l i e n t \ _addr i n e t c l i e n t \ _port i n t e g e r D e f i n i c a o da v i s a o : SELECT d. oid AS datid, d. datname, pg \ _stat \ _get \ _backend \ _pid ( s. backendid ) AS procp FROM pg \ _database WHERE d, ( SELECT pg \ _stat \ _get \ _backend \ _ idset ( ) AND AS backendid ) s, pg 2011 35 / 51

Troubleshooting Tipos de problema Consultas Uma consulta bem escrita é aquela que gera o melhor plano de execução; Mais de 80% dos problemas de performance em bancos de dados estão relacionados a consultas SQL mal escritas; EXPLAIN ANALYZE [?] 2011 36 / 51

Troubleshooting Tipos de problema Consultas Não seja preguiçoso e não jogue seu tempo fora! Tentativa e erro demora muito e nem sempre traz os resultados esperados; Conheça seu banco de dados e o caminho percorrido pela consulta. Onde está o problema na consulta abaixo? Unique ( c o s t = 7 2 0 4 9. 6 9.. 7 2 0 6 5. 2 7 rows =1558 w i d t h =86) ( a c t u a l t i m e = 6 1 2 4 8. 9 1 8.. 6 2 5 3 7. > S o r t ( c o s t = 7 2 0 4 9. 6 9.. 7 2 0 5 3. 5 8 rows =1558 w i d t h =86) ( a c t u a l t i m e = 6 1 2 4 8. 9 1 3.. 6 1 S o r t Key : ( ts_rank_cd ( t o _ t s v e c t o r ( ( ( ( ( ( aslm. name ) : : t e x t ' ' : : t e x t ) ( a q u e r y. q u e r y ) ), lm. landmark_id, lm. name S o r t Method : e x t e r n a l merge D i s k : 15544kB > Nested Loop ( c o s t = 6 0 1 9. 0 9.. 7 1 9 6 7. 0 7 rows =1558 w i d t h =86) ( a c t u a l t i m e = J o i n F i l t e r : ( q u e r y. q u e r y @@ t o _ t s v e c t o r ( ( ( ( ( ( aslm. name ) : : t e x t ' ' me ) : : t e x t ) ) ) > F u n c t i o n Scan on p l a i n t o _ t s q u e r y q u e r y ( c o s t = 0. 0 0.. 0. 0 1 rows=1 w > Merge J o i n ( c o s t = 6 0 1 9. 0 9.. 3 2 9 8 9. 4 4 rows =1558170 w i d t h =54) ( a c t u a (... ) Total runtime : 62546.280 ms (35 rows ) 2011 37 / 51

Troubleshooting Tipos de problema Indisponibilidade momentânea Houve algum erro quando o sistema foi reiniciado? Alguma das partições não subiu? Problema de fencing em Cluster? O log é seu amigo!!! O bom DBA deve conhecer todos os fatores da infra que afetam o banco de dados. 2011 38 / 51

Troubleshooting Tipos de problema Indisponibilidade prolongada Denição da variável TEMPO! Validação de consistência. Levantando a cópia de segurança ou o backup. De acordo com Telles [Telles, 2010], pg_dump não é backup!!! 2011 39 / 51

Troubleshooting Tipos de problema Perda de dados Como estar seguro sobre a perda dos dados? A importância do WAL Como tornar o SGBD menos suscetível a problemas assim? Uma vez perdido, só um restore salva. 2011 40 / 51

Troubleshooting Tipos de problema Tipos de falha segundo [Momjian, 2010] Falha na aplicação do Cliente; Falha "elegante"no servidor (manda desligar); Falha abrupta no servidor; Falha no sistema operacional; Falha no disco; Remoção acidental de dados (DELETE); WAL corrompido; 2011 41 / 51

Troubleshooting Tipos de problema Tipos de falha segundo [Momjian, 2010] (continuação) Arquivos removidos; DROP TABLE acidental; DROP INDEX acidental; DROP DATABASE acidental; Instalação não inicia; Índices corrompidos; Tabelas corrompidas. 2011 42 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: duardo Ferreira dos Santos (Dataprev 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha abrupta no servidor: 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha abrupta no servidor: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha no sistema operacional: 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha abrupta no servidor: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha no sistema operacional: Nenhuma ação necessária. Transações sofrem ROLLBACK. Páginas escritas parcialmente são reparadas Falha no disco: 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha abrupta no servidor: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha no sistema operacional: Nenhuma ação necessária. Transações sofrem ROLLBACK. Páginas escritas parcialmente são reparadas Falha no disco: Restaure o backup ou use PITR Remoção acidental de dados (DELETE): 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha abrupta no servidor: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha no sistema operacional: Nenhuma ação necessária. Transações sofrem ROLLBACK. Páginas escritas parcialmente são reparadas Falha no disco: Restaure o backup ou use PITR Remoção acidental de dados (DELETE): Restaure a tabela do último backup. É possível congurar o banco para visualizar tuplas excluídas. WAL corrompido: 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha "elegante"no servidor (manda desligar): Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha abrupta no servidor: Nenhuma ação necessária. Transações sofrem ROLLBACK. Falha no sistema operacional: Nenhuma ação necessária. Transações sofrem ROLLBACK. Páginas escritas parcialmente são reparadas Falha no disco: Restaure o backup ou use PITR Remoção acidental de dados (DELETE): Restaure a tabela do último backup. É possível congurar o banco para visualizar tuplas excluídas. WAL corrompido: Veja pg_resetxlog. Reveja as transações e identique os danos, incluindo transações parcialmente gravadas. 2011 43 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: Recupere do último backup DROP INDEX acidental: duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: Recupere do último backup DROP INDEX acidental: Crie o índice novamente DROP DATABASE acidental: duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: Recupere do último backup DROP INDEX acidental: Crie o índice novamente DROP DATABASE acidental: Recupere do último backup Instalação não inicia: duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: Recupere do último backup DROP INDEX acidental: Crie o índice novamente DROP DATABASE acidental: Recupere do último backup Instalação não inicia: Normalmente problema no WAL. Veja recuperação do WAL Índices corrompidos; duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: Recupere do último backup DROP INDEX acidental: Crie o índice novamente DROP DATABASE acidental: Recupere do último backup Instalação não inicia: Normalmente problema no WAL. Veja recuperação do WAL Índices corrompidos; Use REINDEX Tabelas corrompidas. duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: pode ser necessário criar um arquivo vazio de mesmo nome do excluído para que o objeto possa ser excluído e restaurado do último backup DROP TABLE acidental: Recupere do último backup DROP INDEX acidental: Crie o índice novamente DROP DATABASE acidental: Recupere do último backup Instalação não inicia: Normalmente problema no WAL. Veja recuperação do WAL Índices corrompidos; Use REINDEX Tabelas corrompidas. Tente reindexar a tabela. Tente identicar o OID da linha corrompida e copie os dados válidos para uma tabela temporária duardo Ferreira dos Santos (Dataprev 2011 44 / 51

Administração assistida(?) 1 Monitoramento Introdução Processador Memória Principal Memória secundária Ferramentas de monitoramento 2 Troubleshooting Introdução Tipos de problema 3 Administração assistida(?) 4 Referências 2011 45 / 51

Administração assistida(?) Seja corajoso!!! Se você espera alguma ferramenta do tipo GUI, esqueca. Mesmo que existam ferramentas, o mais importante é conhecer o SGBD e seus componentes. DBA não é DBV!!! Vale lembrar: é papel do DBA conhecer profundamente o Sistema Operacional 2011 46 / 51

Administração assistida(?) Ainda assim quero telinhas... http://www.pgfoundry.org 2011 47 / 51

Administração assistida(?) Vale lembrar Nenhum software vai administrar o banco pra você. Ajudam se forem bem operados; Se você não sabe o que é partição, tipo de sistema de arquivos, paginação, estratégias de buering, volte algumas casas. Está assustado? duardo Ferreira dos Santos (Dataprev 2011 48 / 51

Administração assistida(?) Vale lembrar Nenhum software vai administrar o banco pra você. Ajudam se forem bem operados; Se você não sabe o que é partição, tipo de sistema de arquivos, paginação, estratégias de buering, volte algumas casas. Está assustado? É possível se tornar um grande DBA sem sair de casa. Acesse www.postgresql.org/doc e seja feliz! Infelizmente, não é possível evoluir muito em nossa prossão sem o Inglês. Se quiser ser realmente bom, domine a língua primeiro. Finalmente, aprenda fazendo. As empresas valorizam muito o estudo, mas para administrar dados tem que ter experiência. 2011 48 / 51

Administração assistida(?) A Comunidade PostgreSQL Não se sinta sozinho: seja bem-vindo à nossa comunidade: www.postgresql.org.br / listas.postgresql.org.br Lá você encontra: Listas de discussão; Documentação; Amigos :) 2011 49 / 51

Referências 1 Monitoramento Introdução Processador Memória Principal Memória secundária Ferramentas de monitoramento 2 Troubleshooting Introdução Tipos de problema 3 Administração assistida(?) 4 Referências 2011 50 / 51

Referências Momjian, B. (2010). Mastering postgresql administration. http://momjian.us/main/writings/pgsql/administration.pdf Acessado em 10/11/2009. PostgreSQL, C. (2010). The path of a query. http://www.postgresql.org/docs/8.4/interactive/query-path.html Acessado em 10/11/2010. Stonebreaker, M. and Rowe, L. A. (1985). The design of postgres. http://s2k-ftp.cs.berkeley.edu:8000/postgres/papers/erl-m85-95.pdf Acessado em 23/12/2010. Stonebreaker, M. and Rowe, L. A. (1987). The postgres datamodel. http://s2k-ftp.cs.berkeley.edu:8000/postgres/papers/erl-m87-13.pdf Acessado em 23/12/2010. 2011 50 / 51

Referências Stonebreaker, M., Rowe, L. A., and Potamianos, S. (1989). Postgres rule system. http://www.postgresql.org/docs/8.4/interactive/biblio.html#ston87a Acessado em 23/12/2010. Telles, F. (2010). Dump não é backup. http://www.midstorm.org/ telles/2010/05/06/dump-nao-e-backup/ Acessado em 10/11/2010. 2011 51 / 51

Referências Contato Eduardo Ferreira dos Santos Dataprev - D2OP/CPDF/DIT eduardosantos@previdencia.gov.br eduardo.edusantos@gmail.com www.postgresql.org.br eduardosan.wordpress.com +55 61 3262-7481 2011 51 / 51