- O PostgreSQL 17 inclui melhorias significativas de desempenho, aprimoramentos no gerenciamento de memória, otimizações no acesso ao armazenamento, melhorias para cargas de trabalho com alta concorrência, aumento de velocidade em carregamento em massa e exportação, além de melhorias na execução de consultas com índices
Melhorias de desempenho em todo o sistema
- A estrutura interna de memória do processo
vacuum do PostgreSQL, essencial para a operação normal, foi aprimorada para reduzir o uso de memória em até 20 vezes
- Com maior velocidade do
vacuum e menor uso de recursos compartilhados, mais recursos ficam disponíveis para as cargas de trabalho
- A camada de I/O teve melhorias contínuas de desempenho
- Melhorias no processamento do Write-Ahead Log (WAL) proporcionam até 2 vezes mais throughput de escrita em cargas de trabalho com alta concorrência
- A nova interface de streaming I/O acelera varreduras sequenciais (leitura de todos os dados de uma tabela) e a atualização das estatísticas do plano de execução com o comando
ANALYZE
- As melhorias de desempenho também se estendem à execução de consultas
- Foi aprimorado o desempenho de consultas com cláusula
IN que usam índices B-tree (método de indexação padrão do PostgreSQL)
- Índices BRIN agora suportam construção paralela
- Inclui várias melhorias para o planejamento de consultas
- Otimizações para restrições
NOT NULL
- Melhorias no processamento de expressões de tabela comuns (consultas
WITH)
- Ampliação do suporte a SIMD (Single Instruction/Multiple Data) para aceleração computacional, incluindo o uso de AVX-512 na função
bit_count
Expansão adicional de uma forte experiência para desenvolvedores
- O PostgreSQL foi o primeiro banco de dados relacional a adicionar suporte a JSON (2012)
- No PostgreSQL 17, a implementação do padrão SQL/JSON foi expandida ainda mais
JSON_TABLE permite converter dados JSON em tabelas padrão do PostgreSQL
- Suporte a construtores SQL/JSON (
JSON, JSON_SCALAR, JSON_SERIALIZE) e funções de consulta (JSON_EXISTS, JSON_QUERY, JSON_VALUE)
- Adição de expressões
jsonpath com foco na conversão de dados JSON para tipos nativos do PostgreSQL (números, booleanos, strings, data/hora)
- O comando
MERGE agora inclui a cláusula RETURNING e a capacidade de atualizar views
- Melhorias nos recursos de carregamento em massa e exportação de dados
- Até 2 vezes mais desempenho ao exportar linhas grandes com o comando
COPY
- Melhor desempenho do
COPY quando a codificação de origem e de destino coincidem
- Adição da opção
ON_ERROR, que permite continuar a importação mesmo quando ocorrem erros de inserção
- Expansão dos recursos de gerenciamento de dados distribuídos entre partições e instâncias remotas do PostgreSQL
- Tabelas particionadas agora suportam colunas
ID e restrições de exclusão
- Com
postgres_fdw, subconsultas EXISTS e IN podem ser empurradas para o servidor remoto
- Inclui um provedor de ordenação de dados embutido, independente de plataforma e imutável
- Oferece semântica de ordenação semelhante à collation
C, mas usa codificação UTF-8 em vez de SQL_ASCII
- Com esse novo provedor de ordenação, consultas baseadas em texto retornam os mesmos resultados de ordenação independentemente de onde o PostgreSQL esteja sendo executado
Melhorias na replicação lógica para alta disponibilidade e upgrades entre versões principais
- A replicação lógica é usada para transmitir dados em tempo real
- Em versões anteriores, era necessário excluir slots de replicação lógica durante upgrades entre versões principais, o que exigia resincronizar os dados para os assinantes após o upgrade
- A partir do PostgreSQL 17, não é mais necessário excluir slots de replicação lógica, simplificando o processo de upgrade
- Inclui controles de failover para replicação lógica, permitindo implantações mais resilientes em ambientes de alta disponibilidade
- Foi introduzida a ferramenta de linha de comando
pg_createsubscriber, que permite converter uma réplica física em uma nova réplica lógica
Mais opções para segurança e gestão operacional
- O PostgreSQL 17 amplia ainda mais como os usuários podem gerenciar todo o ciclo de vida do sistema de banco de dados
- Adicionada uma nova opção de TLS chamada
sslnegotiation, que permite realizar diretamente o handshake TLS ao usar ALPN
- Adicionado o papel predefinido
pg_maintain, que concede permissões para executar tarefas de manutenção
- O
pg_basebackup, utilitário de backup incluído no PostgreSQL, agora oferece suporte a backup incremental, e foi adicionado o utilitário pg_combinebackup para reconstruir backups completos
- O
pg_dump agora inclui uma nova opção --filter, que permite selecionar quais objetos incluir ao gerar o arquivo de dump
- Melhorias nos recursos de monitoramento e análise
- O
EXPLAIN agora mostra o tempo gasto em leituras e gravações de blocos de I/O locais
- Inclui duas novas opções,
SERIALIZE e MEMORY: úteis para verificar o tempo gasto na conversão de dados para transmissão em rede e a quantidade de memória usada
- Passa a informar o progresso da limpeza de índices
- Foi adicionada a view de sistema
pg_wait_events, que, em conjunto com pg_stat_activity, oferece insights sobre por que sessões ativas estão aguardando
1 comentários
Comentários do Hacker News
Parabenizações pelo novo lançamento do PostgreSQL 17, com menção a várias melhorias
pg_basebackupe adição do utilitáriopg_combinebackupOpiniões sobre a utilidade dos recursos de JSON
Compartilhamento de experiência com o uso do recurso JSON_TABLE
jsonbe criar views para fazer o parsingMenção aos ganhos de desempenho e às melhorias de UX no PostgreSQL 17
Impressão sobre o changelog
Compartilhamento da experiência de migração de Oracle para MSSQL por questões de confiança em software open source
Agradecimento pelas melhorias contínuas no Postgres e esperança de suporte oficial à extensão Incremental View Maintenance (IVM)
Expectativa por suporte a upgrades de versão principal do PostgreSQL
Desejo de introdução de tabelas versionadas por sistema no Postgres
Expectativa de que a melhoria na integração de JSON no Postgres possibilite um novo paradigma de frameworks web