Treinamento PostgreSQL - Aula 07

Documentos relacionados
PostgreSQL Troubleshooting e Monitoramento

PostgreSQL Troubleshooting e Monitoramento

Treinamento PostgreSQL - Aula 02

Treinamento PostgreSQL - Aula 09

Banco de Dados II. Administrador de Banco de Dados - DBA. Portela

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

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

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

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Treinamento PostgreSQL - Aula 01

Postgre SQL. Apresentação. Objetivo. Facilitador. Dados Principais. Ricardo Barbosa

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

Treinamento PostgreSQL - Aula 03

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

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Tabelas. Banco de Dados I MySQL

Catálogo de Treinamentos 2016

Fundamentos de Sistemas Operacionais

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

Curso PostgreSQL - Treinamento PostgreSQL - Fundamental

Catálogo de Treinamentos 2017

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

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

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

Administração de Banco de Dados

Reindexação Automática em SGBDs Relacionais

PostgreSQL Performance

O VALOR DO BACKUP NA NUVEM. Fernando Henrique Feitosa

Este tutorial apresenta uma análise para uso adequado e otimizado de seus parâmetros nos processos de ETL, e sua aplicação em situações distintas.

Aula 06 Sistemas Embarcados LT38C

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Banco de Dados. Professora: Luciana Faria

Veeam Endpoint Backup FREE

Análise e otimização de queries no MySQL. Jeronimo Fagundes da Silva

Alta Disponibilidade e Cluster para OpenACS

de Bases de Dados Exame 2

Sistemas Operacionais

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

TOP 20 ROTINAS QUE VOCÊ PODE AUTOMATIZAR HOJE!

BD II (SI 587) Backup de Banco de Dados. Josenildo Silva.

Unidade 5 05/11/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

Formação de DBAs SQL Server 2008

O Modelo e a Álgebra Relacional

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

Introdução à Informática

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

MATA60 BANCO DE DADOS Aula: Otimização. Prof. Daniela Barreiro Claro

5.1. Fluxo para geração do Roadmap

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

Hardware - Processador

MySql. Introdução a MySQL. Andréa Garcia Trindade

Introdução. Gerenciamento de Armazenamento

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8th Edition

BD II (SI 587) Técnicas de Recuperação. Josenildo Silva.

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

Gerência de memória II

Administração de Banco de Dados

Gerência de memória III

Introdução à Informática. Alexandre Meslin

AULA 7. Bruno L. Albrecht Felipe A. Chies Lucas F. Zawacki. PET Computação UFRGS

Aula 06. Slots para Memórias

Faculdades Santa Cruz

Computação L. Apresentação da Disciplina e Conceitos Básicos de Computadores

Banco de Dados. SGBDs. Professor: Charles Leite

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

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

Banco de Dados e Aplicações em Negócios: Introdução.

Cada instância exibe uma instalação separada, por exemplo, produção rodando sql server 2008 e testes rodando sql server 2012.

Em nosso exemplo, o banco de dados XE está trabalhando no modo NOARCHIVELOG, e para verificar isso, basta executar as seguintes tarefas:

Roteiro. Noções de Recuperação de Falhas. BCC321 - Banco de Dados I. Ementa. Posicionamento

Processamento da Consulta. Processamento da Consulta

NOVA ORGANIZAÇÃO PARA ESTRUTURA DE DADOS EM BANCOS RELACIONAIS: ESTUDO DE CASO

Organização de Computadores I

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

Administração de Banco de Dados

Análise empírica de algoritmos de ordenação

Introdução Ferramentas Unix MapReduce Outras Ferramentas. Batch Processing. Fabiola Santore. Universidade Federal do Paraná

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

Sistemas de arquivos

3 Plano de Execução de Consultas

SISTEMAS DE ARQUIVOS. Uma das funções de um sistema operacional, é organizar as informações nas memórias de um computador ou dispositivo móvel.

Principais componentes de hardware de um computador. Processador; Entrada; Saída; Barramento; Memória.

Estácio-FIC Graduação em Redes de Computadores

Cap. 1 Arquitectura de Sistemas de Bases de Dados

SSC510 Arquitetura de Computadores 1ª AULA

Organização e Arquitetura de computadores

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

O que é um sistema de arquivos?

Apresentação. Prof.: Roitier Campos Gonçalves

Gerência de Redes de Computadores. 05 Gerência de Hospedeiros (Hosts)

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Sistemas Operacionais Aula 16 Memória Virtual

Evandro Deliberal Aula 03

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

Capítulo 6 Nível do Sistema Operacional

LISTA DE EXERCÍCIOS #2 (BASEADO NO ENADE COMPUTAÇÃO)

Blob fields in MySQL Databases

Tecnologias de Bancos de Dados

Sistemas de Entrada e Saída

Transcrição:

Treinamento PostgreSQL - Aula 07 Eduardo Ferreira dos Santos SparkGroup Treinamento e Capacitação em Tecnologia eduardo.edusantos@gmail.com eduardosan.com 06 de Junho de 2013 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 1 / 52 edua

Cronograma Semana 1: 27 de Maio a 3 de Junho Administração de Dados Semana 2: 4-11 de Junho Administração de Banco de Dados Semana 3: 13-18 de Junho Alta disponibilidade Semana 4: 19-24 de Junho Performance Tuning Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 2 / 52 edua

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! Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 3 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 4 / 52 edua

Monitoramento Introdução 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 5 / 52 edua

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? Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 6 / 52 edua

Monitoramento Introdução Entendendo o SGBD ([Momjian, 2010]) Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 7 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 8 / 52 edua

Monitoramento Processador 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 eduardo.edusantos@gmail.com 06 de Junho de 2013 9 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 10 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 11 / 52 edua

Monitoramento Processador Processador O bom DBA entende suas consultas e conhece a melhor forma de otimizá-la. EXPLAIN ANALYZE é seu amigo! 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. name ), q u e r y ) a s r a n k 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 ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 12 / 52 edua

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. name ), q u e r y ) a s r a n k 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 ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 13 / 52 edua

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. 9 1 3 rows=12 l o o p s =1) > 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 9 0 5. 7 8 1 rows =388496 l o o p s =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 r l m. name ) : : t e x t ) ' ' : : t e x t ) ( a s r l m. name ) : : t e x t ) ), 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 = 4 4 3. 1 4 5.. 5 5 0 2 5. 7 6 0 rows =388496 l o o p s =1) 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 ' ' : : t e x t ) ( a r l m. name ) : : t e x t ) ' ' : : t e x t ) ( a s r l m. na 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 i d t h =32) ( a c t u a l t i m e = 0. 0 6 5.. 0. 0 6 7 rows=1 l o o p s =1) > Merge J o i n ( cost =6019. 09.. 32989. 44 rows =1558170 width =54) ( a c t u a l t i m e = 4 1 7. 4 1 2.. 3 0 0 6 4. 6 5 5 rows =6258960 l o o p s =1) (... ) Total runtime : 62546.280 ms (35 rows ) Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 14 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 15 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 15 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 15 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 15 / 52 edua

Monitoramento Processador Ferramentas de monitoramento Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 16 / 52 edua

Monitoramento Memória Principal 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 17 / 52 edua

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? Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 18 / 52 edua

Monitoramento Memória Principal Memória Principal Por que estou preocupado com a memória? duardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 19 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 19 / 52 edua

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? Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 19 / 52 edua

Monitoramento Memória Principal Memória Principal [Momjian, 2010] Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 20 / 52 edua

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? Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 21 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 21 / 52 edua

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? Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 21 / 52 edua

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 pgbench, que falaremos mais à frente. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 21 / 52 edua

Monitoramento Memória secundária 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 22 / 52 edua

Monitoramento Memória secundária Memória secundária Utilização dos sistemas de arquivos para realização das consultas (Veja 3) WAL Divisão em pequenos arquivos - Método TOAST Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 23 / 52 edua

Monitoramento Memória secundária Memória secundária [Momjian, 2010] Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 24 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 25 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 26 / 52 edua

Monitoramento Memória secundária Memória secundária Para os casos de: Melhores tipos de disco Opções de storage Consulte: http://savepoint.blog.br/postgresql-discos-cia/ Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 27 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 28 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 29 / 52 edua

Monitoramento Ferramentas de 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 30 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 31 / 52 edua

Monitoramento Ferramentas de monitoramento A bíblia do monitoramento direto no banco [Momjian, 2010] Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 32 / 52 edua

Monitoramento Ferramentas de monitoramento pgbench Muito similar ao método de tentativa e erro: simula carga no banco para vericar a performance; IMPORTANTE: Não se deve usar o pgbench para comparar tempo de resposta entre diferentes ambientes. O tempo varia com muitas variáveis e o resultado não é preciso; O pgbench deve ser utilizado em várias interações incrementais para monitorar ajustes no mesmo ambiente. Exemplo: 1 Executo o pgpench; 2 Anoto os resultados; 3 Altero os shared_buers; 4 Comparo os resultados. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 33 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 34 / 52 edua

Troubleshooting Introdução 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 35 / 52 edua

Troubleshooting Introdução O que é um problema? Lentidão? Indisponibilidade momentânea? Indisponibilidade prolongada? Perda de dados? (PERIGO!!!) Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 36 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 37 / 52 edua

Troubleshooting Tipos de problema 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 38 / 52 edua

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. spb=# \d pg \ _stat \ _ a c t i v i t y V i s a o " p g \ _ c a t a l o g. p g \ _ s t a t \ _ 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 p r o c p i d, pg \ _stat \ _get \ _backend \ _ u s e r i d ( s. b a c k e n d i d ) AS u s e s y s i d, u. r o l n a m e AS usename, pg \ _stat \ _get \ _backend \ _ a c t i v i t y ( s. b a c k e n d i d ) AS c u r r e n t \ _query, pg \ _stat \ _get \ _backend \ _waiting ( s. backendid ) AS waiting, pg \ _stat \ _get \ _backend \ _ a c t i v i t y \ _ s t a r t ( s. b a c k e n d i d ) AS q u e r y \ _ s t a r t, pg \ _stat \ _get \ _backend \ _ start ( s. backendid ) AS backend \ _start, pg \ _stat \ _get \ _backend \ _ c l i e n t \ _addr ( s. b a c k e n d i d ) AS c l i e n t \_addr, pg \ _stat \ _get \ _backend \ _ c l i e n t \ Eduardo Ferreira _port dos ( s Santos. b a c k(sparkgroup e n d i d ) AS ctreinamento l i e n t \ _port epostgresql Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 39 / 52 edua

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 [?] Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia eduardo.edusantos@gmail.com edua Treinamento PostgreSQL - Aula 07 06 de Junho de 2013 40 / 52

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. 9 1 3 rows=12 l o o p s =1) > 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 9 0 5. 7 8 1 rows =388496 l o o p s =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 r l m. name ) : : t e x t ) ' ' : : t e x t ) ( a s r l m. name ) : : t e x t ) ), 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 = 4 4 3. 1 4 5.. 5 5 0 2 5. 7 6 0 rows =388496 l o o p s =1) 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 ' ' : : t e x t ) ( a r l m. name ) : : t e x t ) ' ' : : t e x t ) ( a s r l m. na 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 i d t h =32) ( a c t u a l t i m e = 0. 0 6 5.. 0. 0 6 7 rows=1 l o o p s =1) > Merge J o i n ( cost =6019. 09.. 32989. 44 rows =1558170 width =54) ( a c t u a l t i m e = 4 1 7. 4 1 2.. 3 0 0 6 4. 6 5 5 rows =6258960 l o o p s =1) (... ) Total runtime : 62546.280 ms (35 rows ) Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 41 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 42 / 52 edua

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!!! Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 43 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 44 / 52 edua

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; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 45 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 46 / 52 edua

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] Falha na aplicação do Cliente: duardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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): Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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: Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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: Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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: Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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): Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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: Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 47 / 52 edua

Troubleshooting Tipos de problema Ações sugeridas por [Momjian, 2010] (continuação) Arquivos removidos: duardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 48 / 52 edua

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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 49 / 52 edua

Administração assistida(?) Ainda assim quero telinhas... http://www.pgfoundry.org Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 50 / 52 edua

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 (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 51 / 52 edua

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. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 51 / 52 edua

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. Telles, F. (2010). Dump não é backup. http://www.midstorm.org/ telles/2010/05/06/dump-nao-e-backup/ Acessado em 10/11/2010. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 52 / 52 edua

Referências Contato Eduardo Ferreira dos Santos Sparkgroup Lightbase Consultoria em Software Público eduardo.santos@lightbase.com.br eduardo.edusantos@gmail.com www.postgresql.org.br www.eduardosan.com +55 61 3347-1949 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 07 06 eduardo.edusantos@gmail.com de Junho de 2013 52 / 52 edua