[pgbr-geral] Campanha dos 5 pontos para melhorar o nível da lista

Tem dias que a gente não deveria começar o dia lendo e-mails idiotas: veja o resultado na lista do PostgreSQL PGBR-Geral. Me pareceu que não sou só eu que estou cançado de ver isso on-line. É bem verdade que a resposta do Sr. Roberto Mello me acordou para a dura realidade do “Never ending September“. Mas fica abaixo o registro.

Senhores, eu sei que muitos que estão utilizando o PostgreSQL são novatos, estudantes e entusiastas. Sei que não é de bom tom tratar estas pessoas de forma seca e dura, pois são pessoas que futuramente vão apoiar a comunidade e utilizar o PostgreSQL em cenários mais sérios e coisa e tal. Mas hoje me deu os 5 minutos de fúria.

Vamos escrever melhor gente? Eu seu que não sou uma pessoa que contribui ativamente aqui na lista. Não respondo muita coisa. Mas venhamos e convenhamos, o nível das perguntas (e muitas vezes das
respostas e comentários também) desanima qualquer pessoa letrada que se esforça para se comunicar adequadamente.

Antes de disparar com a metralhadora para todos os lados, eu quero
dizer: entendo que os erros de ortografia e de digitação fazem parte da nossa vida. Eu mesmo cometo erros terríveis no meu blog e nos e-mails. A língua portuguesa é chata mesmo. Quando estou ajudando o
meu filho de 6 anos a fazer a lição de casa eu percebo como as regras
são confusas: G e J, c, ç, ss, z ou c e q, m ou n, r ou rr, e por aí vai. Mas inventaram os corretores ortográficos e eles estão aí para nos livrar da peste, da fome e da danação.

Proponho lançar uma campanha de 5 pontos aqui (a exemplo de zilhões de campanhas semelhantes em trilhões de listas por aí):

  1. O nome do banco de dados livre mais avançado do mundo é ‘PostgreSQL’ ou simplesmente ‘postgres’. Sim, você pode escrever sem acentos e sem letras maiúsculas. Pode até abreviar para PG numa lista mais informal como a nossa. Mas não use nenhuma outra forma, ok? É como mandar um cartão de dia dos namorados com o nome da garota escrito errado. Na dúvida repita em voz alta para não errar mais:  postgres, postgres, postgres. Dá um bom mantra, é relaxante, tente novamente: postgres, postgres, postgres…
  2. Guarde o miguxes para os seus amigos do tempo do ensino fundamental. Se você escreve ou até fala assim, guarde este segredo terrível para você e aqueles que praticam isso. Não abrevie palavras como se estivesse num chat e principalmente não utilize expressões escritas propositalmente erradas. Conheço muita gente da velha guarda que sente dificuldade em ler menssagens assim. O resultado? Não respondem. Eu não respondo mais e sei de gente muito boa que também não responde.
  3. Descrevam o problema! Gente, nós não conhecemos o seu ambiente, não vemos os erros que estão acontecendo na sua tela e não sabemos o que você fez. Nós não vamos adivinhar se você não contar. Dizer simplesmente: “estou com um problema no postgres e nada funciona aqui” pode conter o nome do banco de dados escrito corretamente, pode até fazer um bom uso da língua portuguesa, mas não nos diz nada. Se você se sente apenas frustrado e quer desabafar, recomendo uma boa cerveja, ver desenhos animados na TV ou até mesmo conversar com alguém no IRC. Mas dizer que não funciona e não citar o contexto não vai lhe ajudar.
  4. Se o seu chefe/professor mandou você fazer um trabalho com PostgreSQL para ontem e você precisa de alguém que faça uma parte do trabalho para você, a lista será um ótimo lugar para você encontrar um profissional que lhe cobrará um preço justo pelos seus trabalhos. Não, não vamos fazer o trabalho de graça por você. Por favor não peça.
  5. Uma boa pergunta é metade do caminho para encontrar a resposta. Se você leu a documentação, pesquisou na Internet, testou e não conseguiu fazer o que você queria, você deve ter uma dúvida. Gaste um tempo na elaboração da pergunta. Pense um pouco.
    • Se você leu um monte de documentações (principalmente a oficial) e não entendeu nada, seu problema é de compreensão de texto. Estude inglês ou português e principalmente leia mais. Um livro por mês seria uma boa meta para você. Mas pelo menos 2 bons livros por ano é o mínimo que um cidadão alfabetizado deveria se habituar a ler. Revistas em quadrinhos são muito legais (eu adoro) mas não contam aqui.
    • Se você testou vários how-tos e receitas de bolo prontas e nada funcionou, vá ler a documentação oficial antes de sair perguntando. Um bom tutorial sempre tem referências. Leia as referências. Ocorre que um tutorial se refere a uma situação específica. Pode não ser o seu caso. Você pode precisar de adaptações. Para quem tem uma boa base de conhecimento (por exemplo, para quem leu a tal da documentação…) o tutorial é muito interessante. Para quem cai de paraquedas, costuma ser um desastre.
    • Se você pesquisou um bocado e leu um bocado e conseguiu evoluir até um certo ponto e depois travou. Você deve ter uma genuína dúvida. Mande um e-mail para nós. Escreva bem, descreva o seu processo e nós lhe ajudaremos. Mas antes de enviar o e-mail, lembre-se que você gastou um tempão para chegar onde está. Se você souber exatamente o que você não está entendendo e souber materializar sua dúvida em forma de um texto, seu problema estará muito próximo da solução. É muito comum se passarem 5 ou 10 e-mails numa lista até que as pessoas entendam precisamente o que você quer saber. Pergunte bem e você terá uma boa resposta. Mais que isso, você será respeitado pelo seu esforço em pesquisar antes e também pela sua capacidade de elaboração de questões relevantes.

Há alguns anos atrás, quando o PostgreSQL começou a ganhar mais visibilidade no Brasil (no lançamento do PostgreSQL 8.0 para ser mais exato), houve uma grande tensão na lista por causa da invasão dos miguxos, analfabetos digitais e até folgados mesmo que caiam diariamente de paraquedas na lista. Eu não acho que espantar esta turma nos ajudará em alguma coisa. Mas se as pessoas vem à lista para aprender alguma coisa, espero aqui estar dando a minha contribuição pedagógica. Sim, eu sou um brasileiro e não desisto nunca!

Oracle compra Sun e não é 1º de Abril

Sim, após a brincadeira infame de 1º de abril que postei aqui sobre a compra do MySQL… não é que vem a Oracle e faz uma oferta pela Sun? As coisas parecem que não andam muito bem para a gigante IBM. No ano passado a HP comprou a EDS por 14 BI esquentando a concorrência no setor de serviços, e agora é a Oracle que compra a Sun pela ninharia de 7BI. Para se ter uma idéia de como isso é pouco, a Oracle pagou no começo do ano passado 8,5 BI pela BEA e a Sun pagou 1 BI pela MySQL AB. Em tempos de crise quem tem dinheiro em caixa é rei…

E assim como o Yahoo se negou a ser comprado pela Microsoft (por cifras astronômicas em tempos pré crise), a Sun parece ter não gostado muito da oferta da IBM e aceitou uma oferta ligeiramente superior da Oracle. E zilhões de dúvidas vem a cabeça. E agora o que serão dos projetos livres da Sun? Java, OpenOfficce, MySQL, Solaris e por aí vai. Ninguém sabe… mas a primeira coisa que percebemos é que o mercado corporativo de TI vai se afunilando entre gigantes como IBM, Microsoft, HP, Dell e Oracle. Mas seria bom dar uma olhada na Oracle um pouco mais de perto.

  • A Oracle surgiu como um dos primeiros SGDBs relacionais do mercado, logo depois do DB2 da IBM. Se é verdade que o DB2 ainda dita a maior parte do padrão ISO SQL, a Oracle já lidera claramente este mercado há alguns anos;
  • Se é verdade que até a década de 90 a Oracle se firmou no mercado como desenvolvedora do maior banco de dados do mercado, também é verdade que ela virou a mesa e tem hoje uma suite completa de soluções de grande porte:
  • Se por um lado a Oracle tem uma política de licenciamento que lhe cobra por uma base de testes, um stand by e possui inúmeras funcionalidades e parâmetros não documentados nos seus produtos, oferece o download livre para qualquer um baixar e testar seus produtos e uma enorme biblioteca de documentação pronta para baixar e imprimir, em versão PDF ou HTML.
  • Sim, a Oracle investe em Software Livre sim. Tem inclusive um portal para isso, o http://oss.oracle.com/ com projetos como o OCFS2 e o Btrfs, dois poderosos sistemas de arquivos. Além disso, a Oracle tem uma contribuição intensa no kernel do Linux já faz um bom tempo.
  • Sim, a Oracle tem uma política monopolista e compra tudo que está a sua frente. Mas ao contrário de querer dominar a Internet, como a Microsoft e o Google, o foco da Oracle é bem claro: soluções corporativas para grandes empresas. E diga-se de passagem, ela tem crecido numa velocidade incrível neste segmento. Porém, se a excelência de suas soluções em banco de dados deram uma fama de competência e confiabilidade em seus produtos, o mesmo não se pode dizer sobre as suas demais aplicações que rodam sobre o seu banco de dados. O Oracle Aplication Server é uma colcha de tecnologias livres empacotadas como um monstro de várias patas e nenhum cérebro. E vai a Oracle já avisando que depois de abandonar o terrível Forms e Reports, vai abandonar o fiasco do OAS também em função de uma plataforma Java melhor… é esperar para ver. Os seus ERPs também não são a oitava maravilha em termos de tecnologia (ALGUM É)???? O PeopleSoft por exemplo não tem uma única chave estrangeira no banco de dados, fazendo toda a integridade referencial dentro da aplicação. Não é bem o que a Oracle sempre pregou nos seus manuais.
  • O suporte da Oracle é muito eficiente, funciona 24/7 de verdade. Podem lhe atender no Brasil, EUA, Japão, Índia ou onde quer que seja necessário para atendê-lo em qualquer horário. Mas veja: o nível básico de suporte (independente no nome bonito que se dê)  por e-mail, dá um trabalhão para abrir um chamado. Uma das coisas mais irritantes no site de suporte da Oracle é que eles utilizam tecnologia da Oracle para montar o portal web. É horrível, quem está acostumado com o Gmail e outras interfaces cheias de Ajax como o WordPress sabe o quão terrível é o metalink da Oracle. Fizeram uma versão nova com uso de Flash… piorou!

Então se por um lado a Oracle tem tradição com Software Livre, não tem foco em produtos na linha do MySQL e do OpenOffice. É claro que se é para minar a concorrência com a Microsoft pelo mercado de médio porte, pode não ser má idéia investir um pouco neles, mas não acredito que será o foco principal deles. É claro que podem surgir estratégias inovadoras junto ao MySQL… ele pode se tornar mais aberto ao Oracle e virar um novo Times Ten, mas não acho que vai perdes suas características atuais. Manter o Marketshare do MySQL, apesar de não trazer muito lucro será muito bom para a Oracle que pegará duas pontas do mercado. Já o Solaris o Java são com certeza algo de interesse por parte da Oracle. Veja que o Btrfs que a Oracle criou é baseado no ZFS que por problemas de licenças da Sun, não pode ser agregado ao Linux que usa GPL. Daí se vê a preocupação da Oracle com algumas boas tecnologias encontradas no Solaris. O Java então… toda a suite que roda sobre os bancos de dados Oracle usa Java. Isso sim é um tiro certeiro. Já os servidores SPARC são bons competidores para os servidores da HP e IBM. São caros, mas tem um mercado cativo ainda bem definido em soluções de grande e médio porte.

Mas temos um perdedor claro aqui: o PostgreSQL que vinha sido apoiado pela Sun está certamente fadado a perder esta condição. É claro que existem outras e muitas outras empresas apoiando. Mas a ausência da Sun será sentida, com certeza.

OBS: O artigo do Peter Eisentraut é bem interessante. Acho que concordo com quase tudo que ele diz. Vale a pena dar uma olhada .

Debian 5.0 Lenny já é estável!

Sim senhores, no dia 14/02/2009 foi lançado oficialmente o Debian 5.0, ou Lenny. Já estava usando o Testing há algum tempo e posso dizer que está realmente muito bom. O Debian Installer continua me surpreendendo e emocionando sysadmins em todo o mundo, o número de pacotes e plataformas suportadas continua crescendo, a qualidade no empacotamento continua a mesma.

Ciclo de desenvolvimento

Tem algo que continua a mesma coisa: a demora no lançamento. 22 meses de desenvolvimento não é pouco. Enquanto existem distribuições que lançam uma versão a cada 6 meses, o Debian tem uma política que é uma das coisas que só poderiam acontecer no mundo do Software Livre e que eu adoro repetir: Só é lançada oficialmente a versão quando fica pronta. Para o Debian, isto significa que a contagem de bugs críticos tem que chegar em ZERO. Isto significa que você não precisa esperar o primeiro “pacote de correções” para começar a utilizar o Debian, embora praticamente todas as semanas você tenha atualizações de segurança sendo lançadas. Ou seja, você pode usar de olhos fechados e dormir tranquilo. E olha que isso vem da boca de alguns dos sysadmins mais paranóicos que eu já conheci (sim, por incrível que pareça, existem profissões onde os paranóicos são valorizados).

Debian Live

Outra coisa que eu estou abandonando definitivamente são os live-cds de outras distribuições. Carregar um live-cd no bolso era algo fundamental para os evangelistas do Sofware Livre há poucos anos atrás, hoje é considerada uma ferramenta de trabalho indispensável. Ocorre que já usei muito o Knoppix e até o Ubuntu (quem é que não teve meia dúzia de CDs do Ubuntú em alguma gaveta perdida?). Ocorre que em alguns servidores, quem me salvou a vida foi o Instalador do Debian mesmo. Ele tem uma funcionalidade que permite abrir um shell no meio do caminho e consegue reconhecer muito bem os mais diversos dispositivos de discos, me permitindo fazer ajustes de emergência quando um servidor se nega a subir por causa de algum desastre. Então estou migrando definitivamente para o Debian Live, que vem com vários sabores também, além de uma infraestrutura para tornar simples você criar o seu próprio live cd

Obrigado a todos os desenvolvedores do Debian e demais colaboradores que realizaram mais um excelente trabalho.Que venha agora a próxima versão do Debian, Mr. Squeeze!

TOP TOP – monitoramento em modo texto!

O top é um velho amigo dos usuários do mundo *nix. Para quem não sabe, ele serve para verificar os processos que estão consuminto mais recursos (particularmente memória ou CPU).  Praticamente todo Unix que eu já utilizei tem o top, com exceção de uma versão do AIX que tinha o topas. Se você perder alguns minutos olhando as páginas do man do top, vai descobrir uma série de recursos que tornam o top mais poderoso e agradável. Enfim o top é o comando que está no bash_history de 9 entre 10 usuários de *nix.

Mas… o povo não parou por aí. Não mesmo. Existem uma infinidades de ferramentas inspiradas no estilo do top:

  • htop -  interactive processes viewer -  é o top com outro estilo de visualização e manipulação;
  • atopAT Computing’s System & Process Monitor -  lembra o top, mas se concentra apenas nos processos ativos, e monitora CPU, memória, swap, discos e rede;
  • iotopsimple top-like I/O monitor – uso de I/O (todo DBA deveria usar)
  • slabtopdisplay kernel slab cache information in real time -  uso do cache a partir de /proc/slabinfo;
  • itopsimple top-like interrupt load monitor – uso de interrupções do processador de /proc/interrupts;
  • iftopdisplay bandwidth usage on an interface by host -  uso das interfaces de rede;
  • jnettopView hosts/ports taking up the most network traffic – outra ferramenta para monitorar o uso das interfaces de rede;
  • ntopdisplay top network users – uso da rede e exibe via navegador web;
  • sntoptop-like console network status tool -  verifica se uma lista de destinos de rede estão ativos usando o ping;
  • dnstopdisplays various tables of DNS traffic on your network – tráfego de DNS numa interface ou na rede local;
  • powertopprogram to analyze power consumption on Intel-based laptops - uso de enegia elétrica;
  • xrestopmonitor server resources used by X11 clients – uso de recursos por aplicações gráficas;
  • virt-topshow stats of virtualized domains – um top para máquinas virtuais;
  • apachetopdisplay real-time web server statistics – sessões do Apache;
  • mtopMySQL terminal based query monitor – sessões do MySQL;
  • mytop – top like query monitor for MySQL – outro monitorador de sessões do MySQL;
  • pg_topdisplay and update information about the top cpu PostgreSQL processes - sessões do PostgreSQL.

Bom, estas foram as ferramentas toplike que encontrei em menos de 2 minutos de pesquisa. Conhece outra? Comente por aqui. De qualquer forma, a vida em modo texto é realmente tranquila e trabalhar sobre ssh é realmente uma tranquilidade na vida de qualquer sysadmin. Nada contra as zilhões de ferramentas gráficas de monitoramento, mas quando você precisa atender rapidamente um cliente que está do outro lado do planeta, a dupla ssh + top é imbatível. Claro, existem também o vmstat, o sar, etc, etc, etc…

Acho que um dia vou escrever uma ferramenta assim para o Oracle.. minha vida seria mais fácil. :-)

Qual sistema de arquivos devo utilizar no meu banco de dados?

A pergunta clássica que todos sempre fazem em listas de discussão, fóruns e bate-papos no IRC é “Qual o melhor sistema de arquivos eu devo utilizar para o meu banco de dados”? Para variar, fizeram novamente esta pergunta na lista do PostgreSQL.org.br

E lá fui eu responder o que para muitos é óbvio, mas para muitos não. Em primeiro lugar, deixe-me dizer que estou falando, é  claro, de sistemas de arquivos em Linux. Para outros sistemas operacionais, a coisa funciona mais ou menos assim:

É claro que boa parte dos sistemas operacionais acima também tem suporte para outros sistemas de arquivos. Mas o uso de outro sistema de arquivo é algo mais raro e atende a necessidades específicas. Também não estou falando aqui de sistemas de arquivos com propósitos especiais, otimizados para clusters, servidores de arquivos, discos SSD, etc. De fato existe uma grande variedade de  sistemas de arquivos por aí. Mas é no Linux em que encontramos uma quantidade grande de sistemas de arquivos maduros e que funcionam muito bem, com poucas ou nenhuma limitação. E é aí que a confusão está armada.

Entre os mais comuns estão o EXT2, EXT3, JFS, XFS e ReiserFS. Todos eles são bons sistemas de arquivos e levam alguma vantagem uns sobre os outros em alguma coisa. O ReiserFS é muito bom em lidar com uma grande quantidade de arquivos pequenos. O XFS é bom em lidar com arquivos grandes, e por aí vai. Existem milhares de testes e brigas intermináveis apontando qual deles é o melhor.

O Fato é que tirando a distribuição SUSE, o EXT3 é o sistema de arquivo padrão das grandes distribuições Linux. É também o único sistema de arquivos que a Oracle homologa para a instalação dos seus bancos de dados, tirando é claro o OCFS2, mas que é um sistema de arquivos para cluster, que é outra história.

Antes de mais nada, é preciso entender que em geral todos são bons e apresentam boa velocidade e segurança (ok, tirando o EXT2 neste ponto). O fato é que para cada tipo de aplicação, existe uma forma peculiar de usar os discos. E digo mais, bancos de dados de fornecedores diferentes usam o disco de forma diferente. Mais ainda, um banco de dados do mesmo fornecedor pode utilizar o disco de forma completamente diferente dependendo do tipo de aplicação que o utiliza.

Como eu já demonstrei bem antes por aqui, um banco de dados não deve em situação ideal contar apenas com uma única partição e um único disco. O SO deve ficar num lugar, os logs de transação em outro, os dados em outro lugar e por aí vai. Assim, cada um destes discos são utilizados de forma completamente diferente. Vejamos alguns pontos notáveis:

  • O  Sistema Operacional tem um perfil de uso mais comum e não é crítico em termos de desempenho. Em termos de segurança, você irá ficar muito tempo indisponível se tiver que instalar tudo novamente, mas de fato não vai perder nenhuma informação crítica. É o caso de utilizar o sistema de arquivos padrão e não tentar nenhuma configuração especial;
  • Os logs de transação possuem um perfil bem específico,  gravação sequencial em arquivos de tamanho bem definido. É claro que a gravação só vai ser sequencial mesmo se o disco físico (não o volume lógico) for utilizado apenas para isso e não tiver nenhuma outra operação paralela. Já comentei antes que os logs de transação são um ponto crítico no desempenho e na segurança de um banco de dados com grande volume de atualizações, ou OLTP. Você poderia escolher um sistema de arquivos com uma configuração bem específica só para os logs de transação;
  • Uma partição contendo tablespaces com dados históricos sem atualizações, pode utilizar um sistema de arquivos com opções mais agressivas reforçando apenas a leitura e sem preocupações com segurança como a jornalização;
  • Uma partição com índices que podem ser recriados sem prejuízo para os negócios (a recriação dos índices pode levar várias horas ou até dias) pode dispensar também preocupações com a segurança, mas não com desempenho em gravação;

Tirando estes pontos notáveis, existem algumas considerações de ordem genérica que podemos citar:

  • Embora alguns digam que em bancos de dados você pode utilizar EXT2 ou outros sistema de arquivos sem jornalização, uma vez que você já tem a “jornalização” dos logs de transação do sistemas de arquivos, a afimação só é válida se:
    • Você realiza backup físico e não apenas lógico (dump) do banco de dados periodicamente;
    • Você realiza um backup dos logs de transação arquivados para outro disco e para outro servidor/fita, com período de retenção superior ao intervalo entre os backups físicos;
    • Você está disposto a perder os últimos dados contidos do log de transação ativo, que se for perdido não poderá ser recuperado, afinal não foi arquivado e você não tem cópia em outro disco dele;
    • Você não se importa de perder tempo recuperando backups, seu banco de dados tem suporte ao PITR e você sabe utiliza-lo bem.
  • Todo sistema de arquivos destinado a guardar dados deverá lidar em geral com arquivos grandes, beirando sempre a casa do Gigabyte. Isto geralmente exclui o ReiserFS como sistema de arquivos predileto para bancos de dados. Isto não significa que ele não seja ótimo em outras situações;
  • Se você estiver com um Data Mart ou um Data Warehouse onde o perfil de uso é de cargas em lotes agendadas e poucas consultas monstruosas, utilizar tamanhos de bloco maior do que o padrão pode ser vantajoso. Mas só é vantagem neste tipo de situação, fora destas condições o efeito é o inverso;
  • Os ganhos de desempenho ao escolher o sistema de arquivos mais rápido com as configurações mais agressivas são da ordem de 5 a 20%;
  • Os ganhos de desempenho no ajuste mais agressivo num sistema de arquivos onde ficam tablespaces de uso geral podem ser de cerca de 20% em determinadas operações, mas a perda em outras operações pode ser de mais de 60%;

Se preocupe com segurança de verdade

Todo DBA que já foi acordado de madrugada para ir recuperar um banco de dados corrompido já ouviu a mesma frase “mas em X anos que eu estou aqui na mesma empresa isso nunca aconteceu”. E não raro X chega a ser maior que 5 ou até 10 anos. A verdade é que o fato de você utilizar um bom hardware, um sistema operacional estável e um bom banco de dados não significa que não vai acontecer. E só quem é chamado para consertar os desastres que ocorrem por aí pode ter uma noção de que tipo de sistemas de arquivos é mais ou menos perigoso. Você não acha que porque está X anos numa mesma empresa usando o sistema de arquivos XPTO isto significa que ele é seguro, acha?

Tudo isso para dizer claramente e em bom tom:

NÃO TROQUE SEGURANÇA POR DESEMPENHO

Pode surgir o momento em que você terá de fazer alguns ajustes de desempenho. Eles existem sim. Mas não é qualquer um sabe utilizar isso de forma segura. De fato, conheço poucas pessoas com bom conhecimento técnico que se arriscam a utilizar este tipo de coisa em ambientes realmente críticos. Então, antes de partir para o tuning do seu sistema de arquivos, tenha em mente que você tem coisas muito mais importantes que podem melhorar o desempenho do seu banco de dados:

  1. Normalização e refatoração das tabelas (ganhos de 100% a 10.000%)
  2. Reescrever consultas mal escritas (ganhos de 10% a 10.000% na consulta alterada);
  3. Configurar adequadamente o sistema operacional e o banco de dados adequadamente (ganhos de 10% a 400%);
  4. Separar o log de transação em discos a parte (ganhos de 20% a 40%);
  5. Usar RAID 0+1 ao invés de RAID 5 (ganhos de 30% a 60%);
  6. Dobrar o número de discos do seu RAID (ganho de 60% a 80%)

Ok, não leve muuuito a sério as porcentagens utilizadas aqui. Não tenho nenhuma pesquisa científica para comprovar estes dados. Um DBA mais experiente poderia discordar um pouco dos números apresentados, mas a proporção entre os itens não iria mudar muito. E de qualquer forma ele iria provavelmente concordar com a ordem de importância apresentada aqui.

Se você procura uma forma de ganhar desempenho sem ter que mexer na aplicação, os parâmetros de configuração do seu sistema operacional (particularmente limites de memória e semáforos), e do seu banco de dados (memória, checkpoints e outros) podem ter um impácto enorme. Mas o problema é que são muitos parâmetros, particularmente no banco de dados e os testes não são tão simples. O ajuste ideal pode levar meses no ambiente de produção.

De qualquer forma, sempre haverá o momento em que para aumentar o desempenho você terá que abrir mão da segurança ou colocar a mão no bolso. Muitos parâmetros e configurações que aumentam o desempenho tem impacto muito negativo na segurança . Se você não está disposto a correr riscos então saiba que o preço dos discos não é mais tão assustador quanto antigamente. Mas se você está numa daquelas empresas que não investe nem em espaço extra para guardar os dados, esta não será uma opção viável. De qualquer forma, aumentar o desempenho do hardware, costuma mascarar os problemas na aplicação. Mas é claro, que apesar da aplicação ser o primeiro alvo de otimização, em geral ele é o último a ser atacado. Seja porquê a aplicação é um pacote escrito por terceiros, ou porquê os seus desenvolvedores estão ocupados com uma nova aplicação, o fato é que falar de remodelagem e normalização de uma aplicação em produção para um desenvolvedor é pior do que ofender a mãe. Bom… na verdade dá trabalho para todo mundo, e muitas vezes até o DBA acaba fazendo vista grossa.

O mito dos discos que não falham e da luz que não acaba

É fato que os discos de hoje em dia são muto bons. Muito longe dos discos que vinham com um software para fazer formatação física pois a mídia ia se deteriorando progressivamente. Mas um dia eles podem falhar, particularmente se já estiverem em uso 24/7 há mais de 3 ou 4 anos. Mesmos os melhores discos falham e tem mais, os discos com número de série iguais tem o hábito de falhar na mesma época… como lâmpadas num grande galpão que vão queimando todas juntas. Contra a queima do disco, o seu sistema de arquivo não tem muito o que fazer, a não ser que ele tenha embutido um mecanismo de espelhamento como o ZFS tem. Usando LVM, você também consegue este tipo de funcionalidade, que pode ser uma alternativa para aqueles que não dispõem de uma boa controladora que faça espelhamento por Hardware. Há quem até prefira o RAID por software embora isso esteja longe de ser um consenso. Em todo caso, um bom storage costuma ser a resposta ideal, com monitoramento remoto e tudo o mais.

Mas há algo em que a maioria dos sistemas de arquivos são vulneráveis, a perda de energia. A jornalização foi criada exatamente para você que já viu uma falha de energia corromper todo o seu sistema de arquivos com o seu banco de dados junto.  A jonalização não é perfeita, mas melhora muito o nível de segurança. Vale citar que cada sistema de arquivos implementa a jornalização de uma forma diferente, e que o EXT2 simplesmente não o faz. Mais que isso, algumas opções de montagem dos sistemas de arquivos como o ‘writeback’ tem impacto positivo na performance, mas negativo na segurança da jornalização.  Outros parâmetros como o ‘noatime’ costumam ser mais seguros de se utilizar, e trazem algum ganho de desempenho.

Então chega uma das perguntas que produzem lembranças divertidas em muitos, mas que não foram tão divertidas na época em que ocorreram: “Se eu tenho nobreak, por que eu tenho que me preocupar com jornalização?”. Vejamos alguns bons motivos:

  • Nobreaks quebram;
  • Nobreaks que estão fora da garantia e não tem contrato de manutenção podem já estarem quebrados e você nem desconfia;
  • Nem todos testam os seus nobreaks da foram correta;
  • Nem todos habilitam o agente do nobreak para desligar gentilmente o servidor quando a bateria está no fim;
  • Um banco de dados pode demorar horas para ser desligado gentilmente quando tem muitos usuários conectados simultaneamente ou rodam longas transações;
  • As baterias do nobreak tem vida útil curta, em 2 ou 3 anos você tem
    que trocar. Tem gente que “esquece de trocar”;
  • Um nobreak com isolação total (onde a alimentação ocorre sempre
    diretamente das baterias) tem baterias com uma vida útil de pouco mais
    de 1 ano;
  • Em muitos lugares é comum haver falta de energia por mais de 3
    horas. Não tem nobreak que aguente isso. Nos final de semana a
    concessionária de energia adora fazer manutenção sem aviso prévio;
  • Você pode ter uma manutenção na rede elétrica interna do prédio e
    ficar sem energia. O pessoal da manutenção pode ter esquecido de lhe
    avisar;
  • Mesmo que você tenha um gerador, pode ocorrer de você não estar com a manutenção do gerador em dia, ou ele simplesmente estar sem
    combustível;
  • O número de equipamentos ligados ao nobreak e gerador pode ter aumentado nos últimos meses e o nobreak e/ou gerador podem não suportar a carga adicional;
  • Os servidores ou o sistema operacional  podem travar de repente. Se o servidor for um  Windows ele pode (e vai) pegar  um vírus;
  • Alguém pode desligar um servidor acidentalmente no CPD. Há não muito tempo atrás, os teclados vinham com uma infame tecla chamada “power”, que ficava ao lado da tecla delete. Você não precisava estar dentro do CPD para fazer uma besteira, bastava numa conexão remota apertar a tecla “power” sem querer….
  • Algumas vezes, mesmo quando o sistema operacional é desligado gentilmente, o banco de dados não está configurado para ser desligado gentilmente antes;
  • Agora para matar definitivamente: você sabia que todos os storages tem um nobreak adicional embutido?

O Que há de novo no mundo dos sistemas de arquivos?

Bom, a esta altura eu já poderia estar escrevendo assim:

- Espelho, espelho meu, existe sistema de arquivos melhor que o XPTO?
- Caro sysadmin, é carnaval, vai tomar uma cerveja e deixa o sistema de arquivos aí.

Mas é claro que no último e-mail da conversa na lista de discussão que deu origem ao texto que você esta lindo aqui, o Sr. Fernando Ike estragou a piada infame. Na verdade eu já estava esperando a posição dele que acabou fechando a conversa. Para quem não sabe, o Sr. Fernando Ike é um sysadmin que foi para o PGCon2008 no Canadá apresentar um trabalho de pesquisa feito junto com o Sr. Euler Taveira sobre testes de desempenho no PostgreSQL utilizando diferentes configurações de sistemas de arquivos. Vale a pena conferir aqui. E o que foi que mestre fike disse? Num futuro próximo teremos EXT4 e Btrfs.

Bom, por uma questão de sanidade mental, minha e dos meus leitores, vou deixar isso para o próximo post. Mas fiquem antenados, o mundo continua girando e as coisas estão mudando…