Novidades do PostgreSQL 16

Novidades do PostgreSQL 16

Com o lançamento da nova versão 16 do PostgreSQL, teremos melhorias significativas em seu desempenho, com notáveis aprimoramentos na paralelização de consultas, carregamento em massa de dados e replicação lógica. Esta atualização traz muitos recursos interessantes tanto para desenvolvedores quanto para administradores, incluindo mais sintaxe SQL/JSON, novas estatísticas de monitoramento para suas cargas de trabalho e maior flexibilidade na definição de regras de controle de acesso para a gestão de políticas em grandes conjuntos de dados.

O PostgreSQL, um inovador sistema de gerenciamento de dados conhecido por sua confiabilidade e robustez, se beneficia de mais de 25 anos de desenvolvimento de código aberto por uma comunidade global de desenvolvedores. Por esse motivo, é considerado o banco de dados relacional de código aberto preferido para organizações de todos os tamanhos.

Vamos dar uma olhada no que a versão 16 traz de novo para o PostgreSQL?

Melhorias de Desempenho

O PostgreSQL 16 melhora o desempenho das funcionalidades existentes por meio de novas otimizações no planejador de consultas. Nesta última versão, o planejador de consultas pode paralelizar junções FULL e RIGHT, gerar planos otimizados para consultas que usam funções de agregação com uma cláusula DISTINCT ou ORDER BY, utilizar classificações incrementais para consultas SELECT DISTINCT e otimizar funções de janela para que sejam executadas de forma mais eficiente. Além disso, melhora as “anti-junções” RIGHT e OUTER, o que permite aos usuários identificar linhas ausentes em uma tabela unida.

Esta atualização também inclui melhorias para o carregamento em massa usando o comando COPY em operações únicas e concorrentes, com testes que mostram até 300% de melhoria de desempenho em alguns casos. O PostgreSQL 16 ainda adiciona suporte para balanceamento de carga em clientes que usam libpq e aprimora a estratégia de limpeza a vácuo, reduzindo a necessidade de congelamentos de tabelas completas. Também foi introduzida aceleração de CPU usando SIMD em arquiteturas x86 e ARM, resultando em ganhos de desempenho ao processar strings ASCII e JSON, e ao realizar buscas em arrays e sub transações.

Mudanças de Replicação Lógica

A replicação lógica permite aos usuários transmitir dados para outras instâncias ou para assinantes do PostgreSQL que podem interpretar o protocolo de replicação lógica. No PostgreSQL 16, os usuários podem realizar a replicação lógica a partir de uma instância secundária, o que significa poder publicar alterações lógicas para outros servidores. Isso oferece aos desenvolvedores novas opções de distribuição de carga de trabalho, como usar uma instância secundária em vez da primária mais ocupada para replicar logicamente as alterações para sistemas downstream.

Além disso, há várias melhorias de desempenho: os assinantes agora podem aplicar grandes transações usando processadores paralelos. Para tabelas que não têm uma chave primária, os assinantes podem usar índices B-tree em vez de varreduras sequenciais para encontrar linhas. Em certas condições, os usuários também podem acelerar a sincronização inicial de tabelas usando o formato binário.

O controle de acesso à replicação lógica no PostgreSQL 16 também foi atualizado, incluindo a nova função predefinida pg_create_subscription, que concede aos usuários a capacidade de criar novas assinaturas lógicas. Finalmente, esta versão começa a adicionar suporte para replicação lógica bidirecional, introduzindo funcionalidade para replicar dados entre duas tabelas de diferentes publicadores.

Melhorando a Experiência do Desenvolvedor

O PostgreSQL 16 adiciona mais sintaxe do padrão SQL/JSON, incluindo construtores e predicados como JSON_ARRAY(), JSON_ARRAYAGG() e IS JSON. Esta versão também introduz a capacidade de usar sublinhados como separadores de milhares (por exemplo, 5_432_000) e literais inteiros não-decimais, como 0x1538, 0o12470 e 0b1010100111000.

Os desenvolvedores que utilizam o PostgreSQL 16 também se beneficiam de novos comandos no psql. Isso inclui o \bind, que permite aos usuários preparar consultas parametrizadas; e usar \bind para substituir as variáveis (por exemplo, SELECT $1::int + $2::int \bind 1 2 \g).

A atualização melhora o suporte geral para colações de texto, que fornecem regras para a ordenação textual. O PostgreSQL 16 é construído com suporte ao ICU por padrão, determina a localidade padrão do ICU a partir do ambiente e permite aos usuários definir regras personalizadas de colação do ICU.

Monitoramento mais eficiente

Um aspecto chave na otimização do desempenho de cargas de trabalho de banco de dados é entender o impacto das operações de I/O em seu sistema. O PostgreSQL 16 introduz pg_stat_io, uma nova fonte de métricas importantes para análise detalhada dos padrões de acesso de I/O.

Além disso, esta versão adiciona um novo campo à pg_stat_all_tables, que registra um carimbo de data/hora representando quando uma tabela ou índice foi escaneado pela última vez. O PostgreSQL 16 também torna o auto_explain mais legível, registrando os valores passados para declarações parametrizadas, além de melhorar a precisão do algoritmo de rastreamento de consultas usado por pg_stat_statements e pg_stat_activity.

Controle de Acesso e Segurança

O PostgreSQL 16 oferece opções mais granulares para o controle de acesso e aprimora outros recursos de segurança. A versão melhora a gestão dos arquivos pg_hba.conf e pg_ident.conf, incluindo a correspondência por expressões regulares para nomes de usuários e bancos de dados, bem como diretivas de inclusão para arquivos de configuração externos.

A atualização também adiciona vários parâmetros de conexão de cliente orientados para a segurança, incluindo require_auth, que permite aos clientes especificar quais parâmetros de autenticação estão dispostos a aceitar de um servidor; e sslrootcert=”system”, que indica que o PostgreSQL deve usar o repositório de autoridades de certificação (CA) confiáveis fornecido pelo sistema operacional do cliente. Por fim, a versão adiciona suporte para a delegação de credenciais Kerberos, permitindo que extensões como postgres_fdw e dblink usem credenciais autenticadas para se conectar a serviços confiáveis.

Conclusão

Em resumo, a versão 16 do PostgreSQL traz muitos benefícios e recursos, mas é sensato aguardar até que versões mais estáveis estejam disponíveis e que quaisquer problemas iniciais tenham sido abordados pela equipe de desenvolvimento antes de considerar a migração em ambientes de produção. Dessa forma, você pode garantir a continuidade e a confiabilidade das operações de seu banco de dados.

Anterior Maximize a eficiência da sua infraestrutura com o novo recurso de importação do Terraform
Próxima Otimização de Consultas PostgreSQL com Postgres Explain Visualizer v2

About author

Guilherme Staskoviak
Guilherme Staskoviak 5 posts

DBA Consultor & Instrutor PostgreSQL, amante de tecnologia e música.

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Guia prático: Como otimizar buscas no MongoDB com Aggregate

Descubra como processar documentos distintos agrupados em uma única saída para facilitar a geração de resultados e performance quando preciso efetuar buscas em banco de dados MongoDB A seguir explicarei

DevOps

Descubra como o MetalLB aprimora o balanceamento de carga em ambientes Kubernetes on-premises

Por que usar o MetalLB em um ambiente on-premises? O MetalLB é uma solução essencial para clusters Kubernetes que não estão sendo executados em um ambiente de nuvem. Em ambientes

Infraestrutura TI

4Linux e Zimbra: Parceria promissora para expansão no mercado brasileiro

Com esta parceria a 4Linux passa a oferecer para o mercado brasileiro a versão Network Edition que oferece funcionalidades não existentes na versão community. A 4Linux – Open Software Specialists