13 pontos por GN⁺ 2024-09-27 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-09-27
Comentários do Hacker News
  • Parabenizações pelo novo lançamento do PostgreSQL 17, com menção a várias melhorias

    • Melhorias na estrutura de memória das operações de vacuum, reduzindo o uso de memória em até 20 vezes
    • Suporte a backup incremental no utilitário de backup pg_basebackup e adição do utilitário pg_combinebackup
    • Melhorias no Foreign Data Wrapper (FDW), permitindo processar subconsultas EXISTS e IN em servidores remotos
  • Opiniões sobre a utilidade dos recursos de JSON

    • Ênfase na utilidade dos recursos de JSON em bancos de dados relacionais
    • Menção à importância da capacidade de gerar JSON a partir dos dados
    • Expectativa de aprender a funcionalidade JSON_TABLE
  • Compartilhamento de experiência com o uso do recurso JSON_TABLE

    • Ênfase na utilidade de armazenar respostas JSON em colunas jsonb e criar views para fazer o parsing
    • Satisfação ao ver essa abordagem documentada nos novos recursos do PostgreSQL
  • Menção aos ganhos de desempenho e às melhorias de UX no PostgreSQL 17

    • Suporte a colunas de ID e restrições de exclusão em tabelas particionadas
    • Adição de um provedor de ordenação independente de plataforma e imutável, garantindo resultados consistentes de ordenação em consultas baseadas em texto
  • Impressão sobre o changelog

    • Frustração pela ausência do PR de UUIDv7
  • Compartilhamento da experiência de migração de Oracle para MSSQL por questões de confiança em software open source

    • Alegação do chefe de que "não dá para confiar em open source para software de negócios"
  • 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