PostgreSQL fillfactor

Precisei fazer uma prova simples para um cliente para mostrar como o parâmetro de storage FILLFACTOR afeta uma tabela e como verificar a sua eficiência. Toda vez que um UPDATE é executado no PostgreSQL, ele marca a tupla atualizada para remoção posterior e cria um novo registro. Porém, se no bloco onde o dado está gravado houver espaço sobrando, o PostgreSQL pode fazer a atualização dentro do próprio bloco, utilizando um recurso conhecido como “Heap Only Tuples”, ou HOT. Quando foi introduzido no PG 8.3, foi considerado um divisor de águas, aumentando muito a performance do banco e diminuindo o uso do Vacuum. Mas você pode dar uma ajuda para o HOT funcionar, deixando mais espaço livre para ele trabalhar em tabelas que sofrem muitas atualizações. Vejamos uma demonstração simples.

Primeiro vamos criar uma tabela nova e verificar as estatísticas e depois rodar um UPDATE:

Note que após a atualização, os 1009 registros foram atualizados. Ao olhar o campo n_tup_hot_upd, ou seja número de tuplas que realizaram o HOT durante o UPDATE vemos que apenas 5 foram atualizados com o HOT.

Agora vamos criar novamente a tabela e antes de popular ela vamos ajustar o FILLFACTOR em 90:

Note que agora o número de registros que usaram o HOT subiu para 116. Se fizermos a mesma coisa com um FILLFACTOR em 70:

Por fim com FILLFACTOR EM 50:

Note que aumentar o valor o FILLFACTOR significa também aumentar o volume de espaço em disco utilizado. No nosso exemplo, a tabela que com 100% de FILLFACTOR (o padrão) ocupava 208KB ocupou 424KB com 50%.

O negócio é acompanhar as estatísticas da sua base e verificar onde você tem tabelas com tamanho menor e alto volume de UPDATEs. Nestas tabelas, ajustar o FILLFACTOR, AUTOVACUUM e AUTOANALYZE é vital para um bom desempenho. Tabelas pequenas às vezes passam desapercebidas pelos olhos dos DBAs, mas podem ser grande fonte de dor de cabeça se forem utilizadas com frequência e não forem ajustadas de maneira correta.

 

Concurso “Melhor artigo sobre PostgreSQL”

Tem um zilhão de coisas que eu gostaria de escrever e não tive tempo ainda, então aqui vão algumas ideias:

  • Novas tecnologias sobre Storage e Discos e como ajustar o PostgreSQL para tirar o melhor proveito delas;
  • BDR, replicação bidirecional como nunca vimos antes. Está na crista da onda.
  • Uma boa comparação de tecnologias de replicação / cluster. Tem um monte, vai por mim. O povo tem dificuldade de escolher, a gente precisa dar uma mão!
  • Novos comandos SQL de de UPSERT e CUBE, ROLLUP e GROUPING SETs. Tem muita coisa legal para mostrar aqui. Só montar seus exemplos e demonstrar no psql!
  • Demonstração do Row Locks Security. Segurança avançada é algo muito procurado. Seria legal demonstrar também um pouco das extenssões chkpasspasswordcheckpgcrypto.
  • Comparações de desempenho com índices BRIN, rowlock, sort e outras melhorias de desempenho do 9.5. Se puder fazer um comparativo com muitos processadores, seria lindo.
  • Ideias criativas com as novas funcionalidades de FDW. Dá para fazer coisas mirabolantes, quais as suas ideias?
  • Tipos de dados, propriedades e funções. São tantos tipos de dados, fazem tantas coisas bacanas. A gente tem que divulgar mais isso. Intervalos por exemplo resolvem problemas muito complexos de forma elegante. Quem usa bem tipos avançados, sempre tem um bom exemplo para dar.
  • Testes com algumas ferramentas novas de monitoramento e desenvolvimento… tem coisa boa no ar por aí.
  • DataFiller, ferramenta para geração de dados aleatórios. Algo que pode ser muito útil, fiquei de testar faz um tempo.

Bom, ideias não faltam, com um pouco de cerveja e bom papo surgem dezenas! Só colocar a mão na massa, ou melhor, a mão no teclado.

 

10 anos de PGBR

Ok, ok… antes que alguém reclame, a comunidade de PostgreSQL no Brasil começa no final da década de 90 numa lista de discussões por e-mail no Yahoo. Mas o que houve é que em meados dos anos 2005 a turma começou a se esbarrar cada vez mais com frequência nos eventos de Software Livre pelo Brasil. Particularmente no FISL e o saudoso CONISLI. Foi no CONISLI de 2006 no Anhembi que a turma se juntou e decidiu tomar alguns passos mais ousados. Foi a partir daí que a comunidade passou a se organizar um pouco mais formalmente. A CELEPAR passou a hospedar num servidor compartilhado com a comunidade do BROffice um wiki, uma lista de discussões, depois um planeta e um site.
Também foi a partir daí que decidimos realizar o nosso primeiro evento de PostgreSQL só nosso, o PGCon Brasil 2007.

Para comemorar estes 10 anos na comunidade, um plano ousado para 2016! Vamos brincar com o número 10 e traçar algumas metas….

  • 10 blogs falando sobre PostgreSQL.
  • 10 podcasts, vídeos, hangouts sobre PostgreSQL.
  • 10 patches novos no PostgreSQL e/ou novas extensões.
  • 10 PGDays, o primeiro já está marcado para março, em Curitiba.
  • 10 palestras em eventos internacionais.
  • 10 palestrantes internacionais no PGBR 2016.

Está na hora do pessoal se mexer agora. Vou iniciar minha singela contribuição presenteando o melhor artigo sobre PostgreSQL escrito até o final do carnaval (em 10/02/2016). Basta colocar um link para o SAVEPOINT e publicar o artigo na Internet. O melhor artigo vai ganhar uma garrafa de Vodka que eu vou trazer da Rússia no PGConf RU 2016. Se você já tem um blog, está na hora de tirar a poeira dele, se não, é uma boa hora para começar. Assunto para escrever não falta.

Posso usar o PostgreSQL 9.5 em produção hoje?

Hoje me perguntaram se a versão do postgres 9.5 lançada ontem já pode ser colocada em produção. A resposta correta é “depende”, como todo bom consultor irá dizer, para praticamente qualquer pergunta que você fizer. Vamos aos fatos:

  • As versões X.Y.0 são testadas pelos desenvolvedores e entusiastas durante o desenvolvimento e particularmente durante o lançamento do Release Candidate. Se após o lançamento do RC nenhum bug for encontrado durante os testes a versão é liberada. Isto significa que o PostgreSQL só libera uma nova versão quando todos os bugs encontrados são eliminados.
  • Preste atenção na frase anterior… falamos de “bugs encontrados”. Sabe como é… por mais que você teste, sempre passa alguma coisa. E durante toda a vida de um software, sempre haverão novos bugs descobertos, ainda mais quando se tratar de um software grande e complexo como um SGDB. É por isso que periodicamente são lançados patches com correções para os erros e vulnerabilidades encontradas com o tempo.
  • Lançada a versão X.Y.0, as pessoas em geral saem da fase de testes e passam para a homologação, onde o SGDB é colocado em um ambiente mais parecido com a produção possível e onde usuários passam a testar a base. Esse processo costuma levar algumas semanas ou meses.
  • Sistemas periféricos, mais simples ou menos críticos, costumam serem migrados primeiro. Os demais sistemas costumam aguardar pelo menos a liberação do primeiro patch de correção, ou seja, o 9.5.1 para que as pessoas se sintam mais confiantes em migrar.
  • Algumas empresas só migram versões com mais de um ano de existência. Com o Oracle, é comum pularem as versões .1, como o 9.1, 10.1, 11.1 e atualmente o 12.1 . Isso não é à toa, parece que as versões, .2 são muito mais estáveis. As versões 10.2 e 11.2 por exemplo, eram visivelmente mais maduras que suas antecessoras.
  • Um ponto fora da curva que deve ser notado: se uma nova funcionalidade fizer muita diferença para o seu negócio. Você pode optar por migrar mais rápido para uma nova versão para obter uma vantagem importante. Neste caso, é preciso ter uma equipe experiente e que tenha noção dos riscos envolvidos. Claro que se você tiver suporte adequado, isso se torna menos doloroso e você será capaz de reagir mais rapidamente, caso contrário, será que vale o risco?

PostgreSQL 9.5 lançado!

Mais uma aguardada versão do postgres foi lançada hoje, 07/01/2016. A versão traz muitas novidades interessantes, 3 delas foram desenvolvidas pelo nosso consultor da Timbira, Sr. Fabrizio de Royes Mello. Veja no release notes, a lista completa das novas funcionalidades da versão 9.5.

  • Para comemorar o lançamento da 9.5 lançamos uma pesquisa para as pessoas dizerem quais as novas funcionalidades do PostgreSQL que elas gostaram mais.
  • Divulgaremos o resultado no dia 20/01 no nosso primeiro Programa de Índio do ano, falando sobre o PostgreSQL 9.5, a próxima versão 9.6 e o que mais vem pela frente.

Sobre o primeiro encontro do DBA-Brasil

Ontem, 10/12/2015, rolou o primeiro encontro do grupo recém criado DBA-BR. Apesar da época complicada, com muito trânsito, lugar cheio, barulho e o cansaço de fim de ano, o evento foi muito divertido. Contei umas 25 pessoas +/- . Rever amigos e conhecer novas pessoas é sempre divertido. Fico pensando que muitos DBAs se sentem um pouco isolados ou em minoria nos seus lugares de trabalho, pois em geral estão cercados de pessoas de outras áreas. De qualquer forma ficou claro que juntar essa turma é garantia de bom papo e muitas histórias para contar e ouvir.

Agradeço o pessoal do DBA-BR que organizou o encontro e espero ver todos num momento mais calmo em breve. Algumas ideias aleatórias que surgiram ontem:

  • Todo DBA se ferra com praticamente os mesmos problemas, só muda o endereço. Muitas histórias parecidas com o que eu já vivi em todos lugares.
  • DBA Oracle não consegue ficar muito tempo sem falar de RAC;
  • DBA SQL Server pouco manja de linha de comando. Mas quando o bicho pega mesmo, é lá que se resolvem os problemas cabeludos.
  • DBA DB2 é uma espécie em extinção, ainda mais em mainframe.
  • Muitos DBAs ainda acham que PostgreSQL é só um brinquedinho…
  • A maioria dos fabricantes de SGDBs vendem a ideia de que em breve o seu produto não vai mais precisar do DBA. E os clientes realmente compram essa ideia.
  • Ao contrário do que diz a lenda, DBAs não tem problema em compartilhar conhecimento e ajudar os outros. Mas DBA bonzinho… aí é difícil! DBA tem por obrigação colocar ordem na casa, e muita gente fica brava com isso.
  • Muitos causos, muitas histórias bacanas… isso me deu uma ideia. Logo posto sobre isso. Mas adianto que a brincadeira vai ser gravar alguns podcasts com causos dos DBAs do grupo. Acho que vai ser bacana.
  • Bora marcar outro encontro. Sugiro algo depois do carnaval, quando o calendário brasileiro começa a vigorar de verdade.

encontro_dbabr1

10 Livros que me influenciaram

Uma pequena lista de 10 livros que me marcaram, principalmente na minha juventude. Não existe uma ordem de importância ou cronológica aqui. São apenas alguns livros que lembrei agora, que entre outros me influenciaram. Poderia citar Gabriel Garcia Marquez, ou Dostoievski ou José Saramago entre outros autores mais eruditos, mas por razões muito pessoais estes livros tiveram grande influência na minha vida e continuam até hoje tendo grande importância. Claro, recomendo todos eles.

  • São Bernardo, de Graciliano Ramos é um livro curto que conta sobre a relação de um Coronel e sua esposa, sua acensão e sua difícil relação com a esposa. Na sua reflexão sobre o passado o narrador vai descrevendo a forma de pensar da época no nordeste brasileiro. Uma obra prima assim como Vidas Secas, que mostra o ponto de vista do pequeno camponês.
  • A Fundação de Issac Asimov. A trilogia da Fundação, conta sobre um futuro distante onde um grupo de cientistas tenta evitar que todo o império galático desapareça em previstos 10 mil anos de trevas. Um livro que mais do que ficção científica, fala sobre política, economia, sociologia e muitas referências históricas nas entrelinhas.
  • Admirável Mundo Novo do Aldous Huxley. O imagina um mundo no futuro onde o Estado controla sua vida já antes de nascer. Precursor de uma série de preocupações com os avanços das ciências humanas e biológicas. Um divisor de águas na literatura de ficção para mim. Esse e o 1984 são livros obrigatórios para quem sonha com utopias… Vale muito à pena ler outras obras do autor, particularmente “Os Demônios de Loudun” e “A Eminência Parda”. Está na minha lista para ler faz muito tempo “As portas da Percepção”.  Os contos dele também são ótimos.
  • Brasil Nunca Mais, é mais que um livro, é um projeto criado por Dom Paulo Evaristo Arns, Rabino Henry Sobel, Pastor presbiteriano Jaime Wright e equipe. Um relato do ponto de vista legal sobre as prisões nos tempos da ditadura militar de 64. Um livro feito com um cuidado e rigor e mesmo assim, conheço muita gente que não teve estômago para ler até o final. O relato das torturas e processos fraudulentos de julgamento é bem pesado. Um pedaço da história que não deve ser esquecido jamais.
  • 10 Dias que Abalaram o Mundo, de John Reed. O livro conta sobre os primeiros dias da revolução russa. O livro é interessante por ser uma descrição jornalística vibrante, por ser realizada por um americano e por fazer críticas e elogios de forma ponderada.  o Autor vi de perto os eventos chaves que desencadearam a revolução, seus principais personagens e eventos marcantes da história. Recomendo.
  • Os Carbonários de Alfredo Syrkis. O livro conta sobre um adolescente de classe média lutando que se engaja no movimento estudantil em 1968 no Brasil e cai na clandestinidade. Ele acaba participando do sequestro do embaixador suiço. Acho a narrativa envolvente, ainda mais para mim que tinha mais ou menos a mesma idade do autor na época do ocorrido. Pouco tempo depois de ler este livro, ocorreu o fora Collor. Li depois também a Roleta Chilena que narra o exílio do autor no Chile… quando na mesma época ocorre o golpe do Pinochet.
  • Henfil na China (antes da Coca Cola) descreve a viagem do saudoso Henfil (dos quais os quadrinhos eu sou absolutamente fã) à China. Um relato bem humorado e bastante crítico à revolução chinesa.
  • A Revolução dos Bichos foi o primeiro livro sério que eu li acho que quando eu tinha uns 10 anos. George Orwell faz uma crítica severa á revolução russa usando de uma fábula simples e curta. Vale á pena ler e reler adulto.
  • Pedagogia do Oprimido, do Paulo Freire é um livro visceral para se pensar na educação como uma forma de promover o avanço da sociedade. Me surpreende como ele consegue escrever de forma simples e acessível sobre temas profundos e complexos. A Obra de Paulo Freire é muito acessível, com destaque para “Pedagogia da Autonomia” que algo com o qual é difícil não se identificar. Uma lição de vida.
  • O 18 de Brumário de Luís Bonaparte, escrito pelo velho barbudo Karl Marx é um livro apaixonante. Diferente dos textos mais pesados e mais teóricos, Marx aqui faz uma análise de conjuntura sobre o que foram os golpes de estado de 1848 a 1851. Uma forma mais palatável para entender a forma de pensar de Marx olhando um acontecimento histórico importante e pouco conhecido nos livros escolares.

E você, quais os livros que mais lhe influenciaram na vida? Poste nos comentários a sua lista!

Grupo DBA-Brasil

Passando aqui para divulgar um trabalho bacana de alguns DBAs que resolveram se juntar para montar um grupo chamado DBA-Brasil. Começou como um grupo no Whatsapp, que logo lotou e foi para o segundo, terceiro.. e agora temos também um grupo no Telegram, onde cabem até mil pessoas. São DBAs de diversas áreas trocando experiências, vagas de emprego, nerdices, etc.

Espero encontrar alguns dos senhores para tomar uma cerveja (ou suco, para quem preferir).

Escrever é preciso!

Hoje de manhã um DBA comentou que numa seleção de emprego a primeira fase consistia numa redação. Parece incrível mas houve quem achou isso ruim. Sim, há quem pense que isso não seja mais importante.

Pense bem, a maior parte do nosso trabalho é escrever código, ler código, interpretar e reagir. Escrevemos para outras pessoas (ou máquinas) lerem. E se estas instruções não forem plenamente claras, o procedimento não será executado com sucesso. Escrita pode ser arte, mas é lógica também.

Um profissional de informática não precisa ser um mestre em figuras de linguagem ou ter um estilo rebuscado. Mas deve ter uma boa coesão de ideias, frases simples e claras, sem duplo sentido. Pode parecer simples, mas muitos falham aí.

No começo da minha carreira eu precisei recrutar um estagiário para me ajudar. Houveram inúmeros inscritos e eu não tinha como entrevistar todos e fazer uma prova prática com cada um deles. Então bolei o seguinte teste. Eu dava um tangram para o candidato e pedia para ele elaborar um documento sobre como montar determinada figura, sem poder dizer antes qual figura seria montada ao término. 80% dos candidatos foram dispensados logo de cara com esse teste. Não levei muito em conta os erros de ortografia, exceto se isso fosse muito gritante. No entanto, a maioria era incapaz de elaborar instruções inteligíveis.

Um profissional pode aprender diversas linguagens de programação, mas vale à pena lembrar que todas elas foram baseadas na nossa linguagem escrita. Peculiarmente a linguagem Perl foi desenvolvida pelo Sr. Larry Wall, que além de um programador, é um linguista também. Não é a toa que a curva de aprendizado do Perl é maior. Ela pois possui uma sintaxe mais complexa e uma estrutura mais próxima da gramática inglesa. Ainda bem que não é baseada  gramática da língua portuguesa. Enfim, um profissional de TI que não escreve bem tem dificuldades em diversos níveis. Dificuldade de síntese, encadeamento lógico e precisão no raciocínio. Imagine alguém que lhe pede informações sobre como chegar em algum lugar na rua. Se a pessoa não for extremamente objetiva e direta, você esquece o que está sendo explicado na 3ª informação que recebe. Quantas vezes não fazemos isso ao quando estamos atendendo um cliente?

Sim, o bom domínio da escrita ainda é pré-requisito para se trabalhar em informática sim. Corretores ortográficos não resolvem problemas de coesão e coerência. Trabalhamos escrevendo o tempo todo. Escreva direito e seja feliz.

Gerando valores aleatórios no PostgreSQL, ou quase…

Em homenagem à Megasena acumulada que eu não ganhei… uma pequena brincadeira no PostgreSQL, gerando números, datas, caracteres e pedaços de textos