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
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.
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;
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;
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;
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;
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;
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;
ı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;
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;
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;
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.
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;