Thursday, May 12, 2016

PostgreSQL 9.6: estamos quase lá

Hoje foi anunciado o lançamento da primeira versão beta do PostgreSQL 9.6. Versão beta significa que estamos quase lá. O que está faltando? Testes, testes e mais testes. É o momento de corrigir alguns bugs, ajustar a documentação, identificar e corrigir regressões de performance, identificar e corrigir portabilidade (se bem que a BuildFarm tem uma boa cobertura de arquiteturas) e escrever as notas de lançamento definitivas.

O PGDG sempre almeja uma nova versão com uma quantidade mínima de bugs. É por esse motivo que precisamos de testes das funcionalidades novas e também das existentes. O período em beta vai depender da quantidade de correções que forem aparecendo. Não deixem de reportar erros para comunidade.

As principais funcionalidades da versão 9.6 são:

  • buscas sequenciais, junções e agregações em paralelo;
  • suporte a clusters que escalam em leitura utilizando múltiplos servidores secundários síncronos;
  • busca textual por frases;
  • postgres_fdw poderá executar ordenações, junções, UPDATEs e DELETEs no servidor remoto;
  • diminuição do impacto do autovacuum em tabelas grandes.
Algumas melhorias / funcionalidades que também merecem destaque são:
  • informação sobre espera de bloqueios no pg_stat_activity;
  • visão pg_stat_progress_vacuum: progresso do VACUUM;
  • função pg_blocking_pids(): informa PIDs que estão bloqueando um PID específico;
  • no parâmetro wal_level, os valores archive e hot_standby foram substituídos por replica;
  • término de sessões idle in transaction após algum tempo;
  • forçar término de conexões se o postmaster terminar;
  • suporte a múltiplos servidores secundários síncronos (somente um era suportado);
  • ALTER TABLE foo ADD COLUMN IF NOT EXISTS bar integer;
  • redução de bloqueios em ALTER TABLE ao alterar parâmetros do autovacuum e fillfactor;
  • uso do sistema de privilégios para gerenciar acesso a funções do sistema;
  • reservar roles que começam com pg_ (roles do sistema a partir dessa versão);
  • no psql, o comando \crosstabview é útil para resultado de consultas de agregação em duas dimensões (ex. quantidade vendida por filial / mês);
  • no psql, o comando \gexec faz uma consulta e envia o seu resultado como uma nova consulta (útil para consultas que montam consultas);
  • interface genérica para escrita de registros no WAL (suporte a novos métodos de acesso -- CREATE ACCESS METHOD);
  • suporte a mensagens do WAL genéricas para decodificação lógica;
  • módulo bloom: método de acesso baseado no filtro bloom utilizando a nova interface para criação de métodos de acesso.

Como todas as outras versões, as melhorias no PostgreSQL envolvem mudanças de grande quantidade de código. É fundamental a sua participação nesse processo de testes para se certificar que você pode migrar com segurança para 9.6 ou mesmo que aquele novo projeto será beneficiado com alguma funcionalidade nova. Leia as notas de lançamento para saber as novidades mas também as incompatibilidades. Faça o download do beta1 e teste-o. Reporte insucessos e sucessos (se quiser destacar melhorias no seu ambiente). Há pacotes disponíveis para WindowsRed Hat (seus derivados) e Debian (seus derivados).

A qualidade do PostgreSQL depende muito dos testes de seus usuários. Bons testes!