Slide 1

Slide 1 text

Postgres Tuning o elefante mais r´ apido que um leopardo F´ abio Telles Rodriguez Timbira - A empresa brasileira de PostgreSQL 03 de maio de 2013

Slide 2

Slide 2 text

Agenda Sobre o que estamos falando? Ajustes iniciais Ajustes no SQL Considera¸ c˜ oes finais Perguntas

Slide 3

Slide 3 text

Sobre esta apresenta¸ c˜ ao esta apresenta¸ c˜ ao est´ a dispon´ ıvel em: http://www.timbira.com.br/material esta apresenta¸ c˜ ao est´ a sob licen¸ ca Creative Commons Atribui¸ c˜ ao 3.0 Brasil: http://creativecommons.org/licenses/by/3.0/br

Slide 4

Slide 4 text

Sobre o que estamos falando? Figura: Escolha dif´ ıcil

Slide 5

Slide 5 text

Sobre o que estamos falando? Instala¸ c˜ oes el´ etricas

Slide 6

Slide 6 text

Sobre o que estamos falando? Instala¸ c˜ oes el´ etricas A maior preocupa¸ c˜ ao numa instala¸ c˜ ao el´ etrica ´ e sempre o calor; A corrente el´ etrica gera calor; V´ arios condutores em instalados juntos geram mais calor; As condi¸ c˜ oes de ventila¸ c˜ ao dificultam ou facilitam a dissipa¸ c˜ ao do calor; As condi¸ c˜ oes atmosf´ ericas ou a presen¸ ca de outras fontes de calor devem ser levadas em considera¸ c˜ ao; Materiais inflam´ aveis devem ser evitados.

Slide 7

Slide 7 text

Bancos de dados A maior preocu¸ c˜ ao num banco de dados s˜ ao os Discos; Antes de confirmar uma transa¸ c˜ ao (COMMIT) vocˆ e deve persistir a informa¸ c˜ ao em disco; Discos s˜ ao milhares de vezes mais lentos que a CPU e a mem´ oria; A lei de moore n˜ ao se aplica aos discos; Grava¸ c˜ oes e leituras em discos s˜ ao opera¸ c˜ oes seriais e n˜ ao s˜ ao paralelizadas;

Slide 8

Slide 8 text

Discos Figura: Discos num Storage

Slide 9

Slide 9 text

Uso de discos Um UPDATE pode obrigar um registro a migrar de bloco se ele n˜ ao couber mais l´ a; Ao atualizar um registro numa tabela, seus ´ ındices tem de ser atualizados tamb´ em; Consultas pesadas que n˜ ao cabem na mem´ oria utilizam o TABLESPACE tempor´ ario; Informa¸ c˜ oes de rollback s˜ ao gravados para reverter uma trasa¸ c˜ ao; V´ arias pessoas podem querer alterar os mesmos dados ao mesmo tempo;

Slide 10

Slide 10 text

Log de transa¸ c˜ oes (WAL) Todo SGDB tenta guardar a maior parte poss´ ıvel dos dados em mem´ oria; Toda vez que uma transa¸ c˜ ao ´ e confirmada (COMMIT) um registro no WAL ´ e gravado; O WAL ´ e o ”Write Ahead Log”grava os registros sequˆ encialmente; de tempos em tempos os dados em mem´ oria (dirty buffers) s˜ ao gravados definitivamente nos datafiles (checkpoint); Se houver uma falha no SGDB o WAL ´ e utilizado para reproduzir as tranza¸ c˜ oes em mem´ oria que ainda n˜ ao foram consolidadas em disco; Informa¸ c˜ oes de rollback s˜ ao gravados para reverter trasa¸ c˜ oes ainda em mem´ oria em caso de falha do SGDB;

Slide 11

Slide 11 text

Onde est´ a o problema afinal? 50% est˜ ao em SQL mal escrito; 20% est˜ ao em modelagem de dados mal feita; 10% est˜ ao em ajustes ruins do SGDB; 5% est˜ ao em ajustes ruins do SO; 5% est˜ ao em hardware mal dimensionado;

Slide 12

Slide 12 text

Agenda Sobre o que estamos falando? Ajustes iniciais Ajustes no SQL Considera¸ c˜ oes finais Perguntas

Slide 13

Slide 13 text

Hardware

Slide 14

Slide 14 text

Hardware Utilize um servidor dedicado. (VMs go home!); Utilize DISCOS dedicados (Tirem a m˜ ao do meu storage!); Prioridade de gastos: discos, controladora de discos, mem´ oria, processador; SSD SLC > SSD MLC > Fiber channel > SAS > SATA; Infiniband > Fiber channel > iSCSI; RAID 10 > RAID 1 > RAID 6 > RAID 5 > JBOD; Prefira controladoras com bastante cache, baterias externas e suportes a muitos discos; Prefira processadores com o melhor e maior cache poss´ ıvel e muitos cores;

Slide 15

Slide 15 text

Sistema Operacional Prefira sistemas UNIX: Linux, FreeBSD, OpenBSD, Solaris, etc; O melhor SO ´ e aquele que sua equipe tem competˆ encia para operar eficientemente; Sempre instale a vers˜ ao em 64 bits do SO; Prioridade de gastos: discos, controladora de discos, mem´ oria, processador; Prefira RAID por hardware e n˜ ao por software; N˜ ao use LVM; N˜ ao instale softwares e servi¸ cos desnecess´ arios: interfaces gr´ aficas, Samba, NFS, Apache, etc;

Slide 16

Slide 16 text

Particionamento de Discos (Linux) /boot (EXT4); raiz (EXT4); dados (RAID 10 ou RAID 1 + XFS ou EXT4 + noatime); pg xlog (RAID 10 ou RAID 1 + EXT2 + noatime ou EXT3 + noatime + writeback); pg log (EXT2 + noatime); tablespaces com ´ ındices, tablespaces tempor´ arios (RAID 0 + EXT2 + noatime); tablespaces com dados hist´ oricos (RAID 5 + XFS ou EXT4 + noatime); backup e archives;

Slide 17

Slide 17 text

Ajustes no SO (Linux) /etc/sysctl.conf kernel.shmmax (50% da RAM dispon´ ıvel); Sem´ aforos (para suportar um n´ umero alto de conex˜ oes); file-max; overcommit; /etc/security/limits.conf nproc; nofile; /etc/fstab noatime para os dados; noatime + writeback para o pg xlog;

Slide 18

Slide 18 text

Ajustes no PostgreSQL max connections: O menor n´ umero vi´ avel; shared buffers: < 8GB ou 25% da RAM dispon´ ıvel; maintence work mem: 75% do tamanho da maior tabela; checkpoint segments: entre 16 e 64; checkpoint timeout: entre 10min e 30min;

Slide 19

Slide 19 text

Agenda Sobre o que estamos falando? Ajustes iniciais Ajustes no SQL Considera¸ c˜ oes finais Perguntas

Slide 20

Slide 20 text

Acerte a sua modelagem Use o tipo de dados certo para a tarefa certa; Use chaves naturais; N˜ ao use campos flex; Para dados n˜ ao estruturados, vocˆ e tem hstore, vetores e tipos compostos; Use ´ ındices e gatilhos com sabedoria (teste e monitore o seu uso); Pilhas e filas n˜ ao devem ficar no seu SGDB;

Slide 21

Slide 21 text

Escrevendo SQL Jamais utilize uma fun¸ c˜ ao em PL para algo que um SQL puro consegue fazer; COMMIT a cada X altera¸ c˜ oes. X > 100 e < 100K; Se uma consulta retorna mais de 100 registros, reveja a regra de neg´ ocio; INSERT < INSERT multiplo < PREPARE e EXECUTE < COPY < INSERT ... SELECT; Aprenda a usar subconsultas e window functions e Common Table Expression; Relat´ orios pesados devem utilizar vis˜ oes materializadas.

Slide 22

Slide 22 text

Agenda Sobre o que estamos falando? Ajustes iniciais Ajustes no SQL Considera¸ c˜ oes finais Perguntas

Slide 23

Slide 23 text

Testes Teste as funcionalidades; Teste com volumes de dados o mais realistas poss´ ıvel; Teste com carga de concorrˆ encia o mais realista poss´ ıvel; Aprenda a utilizar bem o EXPLAIN.

Slide 24

Slide 24 text

Monitoramento Monitore o SO, o PostgreSQL, a aplica¸ c˜ ao; Gere logs que mostrem a opera¸ c˜ ao e a dura¸ c˜ ao de cada a¸ c˜ ao; Gere logs em formatos que possam ser manipulados por ferramentas automatizadas; Aprenda a configurar o log do PostgreSQL e o PGBadger; Fa¸ ca coletas peri´ odicas e armazene tudo em um local central; Crie baselines e compare sempre com elas;

Slide 25

Slide 25 text

Para os DBAs... Durma bem antes de um novo deploy. Tire uns dias de folga; N˜ ao deixe de tomar cerveja com os amigos... Pratique exerc´ ıcios f´ ısicos regularmente!!!

Slide 26

Slide 26 text

Perguntas ? F´ abio Telles Rodriguez [email protected] http://www.timbira.com.br