O PostgreSQL Development Group lançou uma atualização para todas as versões suportadas (9.4.4, 9.3.9, 9.2.13, 9.1.18 e 9.0.22) na sexta-feira (22/06). Em menos de 2 meses foram lançadas 3 versões corretivas para cada uma das versões. Em particular, as atualizações nas versões 9.3 e 9.4 introduziram bugs em algumas de suas correções; esse foi o motivo para o lançamento tão rápido de versões corretivas.
Algumas versões corretivas tentaram corrigir problemas no sistema multixact. É fato que a maioria dos usuários não vão chegar a manifestar o bug mas se isso acontecer, você pode ter corrompimento de dados irrecuperável. Não espera saber se alguma de suas aplicações vai produzir tal bug, atualize a versão o quanto antes.
Além do problema no sistema multixact (que coleciona bugs a várias versões), uma correção inexata introduziu um problema na 9.4.2 e 9.3.7 ao realizar um fsync em todo diretório de dados após uma queda. Infelizmente isso conduz a um erro se houver arquivos que não podem ser escritos pelo usuário postgres (por exemplo, arquivo de certificado SSL); a consequência é que o servidor não sobe.
Um outro problema é com o pg_upgrade. O bug pode se manifestar mesmo em versões que não contém o bug mas que foram atualizadas a partir de uma versão problemática. A consequência do bug é disparar um autovacuum em todas as tabelas. Você pode evitar o bug, fazendo um VACUUM manual antes de atualizar para uma versão mais nova.
Se você ainda não atualizou as versões suportadas, o que você está esperando? Esse aviso é urgente principalmente para aqueles que possuem versão 9.4 e 9.3.
Showing posts with label 9.4. Show all posts
Showing posts with label 9.4. Show all posts
Sunday, June 14, 2015
Friday, May 16, 2014
Estamos quase lá... 9.4 beta 1
Ontem (15/05) foi anunciado o lançamento da primeira versão beta do PostgreSQL 9.4. Uma versão beta do PostgreSQL é quase a versão final. Ainda falta aparar algumas arestas... Daqui a alguns meses, a porteira se fecha (ou melhor dizendo, se abre). Se você se interessar por algumas das novas funcionalidades, agora é a hora de começar a descobrir as suas potencialidades. Se você já estiver planejando uma mudança de versão, esta é a hora de descobrir o que mudou (e se for o caso, adequar suas aplicações) ou mesmo reportar alguma regressão de performance de alguma consulta.
As principais funcionalidades são:
As principais funcionalidades são:
- JSONB: um novo tipo de dados para armazenar JSON. Espere aí... o Postgres já tem um tipo JSON? Sim, mas este novo tipo usa um formato de armazenamento que é performático e ainda vem com suporte a indexação e contém vários operadores e funções;
- Replicação: uma nova API para decodificação e transformação das mudanças ocorridas no banco de dados. Trocando em miúdos, uma API que permite a construção de um plugin para replicação lógica. Espera-se que algumas das soluções de replicação que utilizam comandos passem a adotar essa API por ser mais performática e não precisar de objetos adicionais (ex.: gatilhos). Eu fiz o plugin wal2jon (monta objetos JSON com dados das mudanças realizadas) para demonstrar as funcionalidades da API e também ouvi rumores que o Slony-I passará a utilizar tal API;
- Visão Materializada: o REFRESH não mais bloqueia as leituras;
- ALTER SYSTEM: um novo comando SQL que permite alterar o postgresql.conf. Os desenvolvedores de aplicativos que precisam alterar parâmetros em dezenas, centenas ou mesmo milhares de servidores vão adorar esta facilidade;
- background worker: uma nova API que permite ter processos filho do processo principal. Podemos registrar, iniciar e parar esses processos. Com isso, poderemos escrever um agendador ou alguma rotina de consolidação periódica que trabalha "anexado" ao serviço do postgres.
Algumas melhorias que também merecem destaque são:
- acelerar buscas e redução do tamanho de índices GIN;
- melhorar performance de funções de agregação;
- melhorar escalabilidade de escrita;
- diminuir nível de bloqueio em alguns comandos ALTER TABLE;
- novo parâmetro autovacuum_work_mem para controlar memória utilizada por um processo do autovacuum (antigamente era utilizado o maintenance_work_mem);
- os parâmetros work_mem, maintenance_work_mem e effective_cache_size sofreram aumento em seus valores padrão;
- atrasar replicação (foi uma das funcionalidades que o Fabrizio tirou do forno);
- EXPLAIN ANALYZE apresenta tempo gasto para planejamento da consulta;
- ALTER TABLESPACE ... MOVE move objetos de uma tablespace para outra;
- opção --analyze-in-stages do vacuumdb executa ANALYZE em três estágios com diferentes configurações para produzir estatísticas úteis rapidamente (útil para colocar o banco rapidamente em produção);
- pg_basebackup permite realocar o diretório do pg_xlog;
- pg_basebackup permite controlar a taxa de transferência do cópia física;
- aplicativo pg_prewarm carrega dados de tabelas na cache do postgres (shared buffers);
- pg_stat_statements passa a armazenar consultas em um arquivo reduzindo a limitação do tamanho das consultas e permitindo um número maior de consultas únicas.
A cada versão há inúmeras mudanças internas, portanto, é de fundamental importância que você nos ajude a ter a versão 9.4 (quase) sem bugs. Leia as notas de lançamento para saber das novidades e, principalmente, das incompatibilidades. Faça o download do beta 1 e teste-o no seu ambiente. Reporte os sucessos e os insucessos. Quanto mais erros conseguirmos corrigir durante o beta melhor será a primeira versão da série 9.4. Já existe até pacotes para Debian e derivados disponíveis.
Bons testes!
Bons testes!
Subscribe to:
Posts (Atom)