← Últimos Posts do Blog

🎵 Podcast no Spotify

Olá a todos! Estou super animado para compartilhar as últimas novidades do mundo do PostgreSQL. A beta do Postgres 18 acaba de ser lançada, trazendo uma série de melhorias e recursos que prometem elevar ainda mais a performance e a usabilidade do nosso banco de dados favorito.

Vamos direto aos destaques que você precisa conhecer:

1. I/O Assíncrono: Um Salto na Performance!

Uma das novidades mais empolgantes do Postgres 18 é a introdução de um novo subsistema de I/O assíncrono. Até agora, todo o I/O no Postgres era síncrono, ou seja, cada leitura bloqueava a execução da consulta até que os dados chegassem. Com o I/O assíncrono, o Postgres pode emitir múltiplas leituras em paralelo e continuar a execução enquanto aguarda os resultados.

Isso ajuda a reduzir o tempo de espera da CPU e melhora o throughput. Agora, você poderá escolher entre três métodos de I/O através da nova configuração io_method: * sync: Mantém o comportamento antigo. * worker: Utiliza background I/O workers (este é o padrão). * io_uring: Ignora os I/O workers e usa um buffer de anel compartilhado com o kernel Linux para uma sobrecarga ainda menor (apenas para Linux).

Testes iniciais já mostram melhorias de 2 a 3 vezes em consultas com muitas leituras, especialmente com io_uring. Uma nova view, pg_aios, permitirá inspecionar operações de I/O em andamento ao usar métodos assíncronos.

2. Melhorias para Atualizações de Versão Principal

Esta é uma mudança de grande impacto para equipes de operações: o pg_upgrade agora pode manter as estatísticas do planner do cluster antigo. Em versões anteriores, uma atualização significava começar do zero, e os planos de consulta muitas vezes eram subótimos até que um ANALYZE completo fosse executado após a atualização.

Agora, a menos que desabilitado com --no-statistics, o pg_upgrade copia as estatísticas de nível de relação e coluna, permitindo que o planner tome decisões informadas imediatamente. Isso ajuda a evitar degradação de desempenho logo após uma atualização.

Duas novas opções de pg_upgrade também ajudarão a reduzir o tempo de inatividade em ambientes grandes: * --jobs: Permite a execução paralela de verificações de atualização, agilizando a validação pré-voo quando há muitos objetos. * --swap: Altera o modo de atualização para trocar diretórios de dados em vez de copiá-los ou vinculá-los, evitando a criação de duplicatas.

3. Saída EXPLAIN Mais Detalhada

O Postgres 18 também chega com recursos de observabilidade muito práticos no EXPLAIN ANALYZE: * O uso de Buffer e I/O é mostrado por padrão. * Nós de index scan agora relatam quantas lookups de índice foram realizadas. * No modo VERBOSE, você verá gravações de WAL, tempo de CPU e tempo médio de leitura.

4. Novas Estatísticas para VACUUM e ANALYZE

Continuando com as melhorias de observabilidade, pg_stat_all_tables no Postgres 18 agora reporta o tempo total gasto em vacuuming e analyzing em cada tabela, incluindo execuções automáticas. Você verá isso em colunas como total_vacuum_time e total_autovacuum_time.

Se você habilitar track_cost_delay_timing, também obterá um registro mais preciso dos atrasos em pg_stat_progress_vacuum, pg_stat_progress_analyze e nos logs de autovacuum.

5. Geração de UUIDv7

Há uma nova função uuidv7() para gerar UUIDs classificáveis por timestamp. Estes são úteis para inserções ordenadas ou camadas de cache que se beneficiam de chaves cronológicas. O Postgres também adicionou uuidv4() como um alias para gen_random_uuid() para maior clareza.

6. Melhorias de Desempenho Contínuas

Com cada versão principal, o Postgres recebe novas melhorias de desempenho. Para esta versão, alguns destaques incluem: * Construções de índice GIN paralelizáveis, que ajudam a acelerar a construção de seus índices de full-text search, JSON ou array. * Suporte para skip scan em índices btree. * Transformação de IN(VALUES) e filtros OR repetidos em operações ANY(array).

7. Suporte a OAuth

Por último, mas não menos importante, o Postgres 18 também adiciona um novo método de autenticação oauth. Isso permite que os clientes se autentiquem usando tokens OAuth 2.0, com validação tratada por meio de uma interface de plugin. Você o configura em pg_hba.conf como outros métodos de autenticação, e carrega os validadores de token usando a nova configuração oauth_validator_libraries. Isso adiciona uma opção extensível para integração com provedores de identidade.

O que vem por aí?

Fique ligado para mais atualizações e continue inovando com o Postgres!


Fonte: As informações para este post foram baseadas em "Postgres 18 Beta Is Out: 7 Features You Should Know About" da Neon.