Versão do SGBD PostgreSQL 15

Após um ano de desenvolvimento, foi publicada uma nova ramificação estável do SGBD PostgreSQL 15. As atualizações para a nova ramificação serão lançadas ao longo de cinco anos, até novembro de 2027.

Principais inovações:

  • Adicionado suporte ao comando SQL "MERGE", que se assemelha à expressão "INSERT...ON CONFLICT". MERGE permite criar instruções SQL condicionais que combinam operações INSERT, UPDATE e DELETE em uma única expressão. Por exemplo, usando MERGE, você pode mesclar duas tabelas inserindo registros ausentes e atualizando os existentes. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id QUANDO MATCHED ENTÃO ATUALIZAR SET saldo = saldo + transaction_value QUANDO NÃO MATCHED ENTÃO INSERIR (customer_id, saldo) VALUES (t.customer_id, t.transaction_value);
  • Os algoritmos para classificação de dados na memória e no disco foram significativamente melhorados. Dependendo do tipo de dados, os testes mostram um aumento na velocidade de classificação de 25% a 400%.
  • As funções de janela usando row_number(), rank(), densa_rank() e count() foram aceleradas.
  • Foi implementada a possibilidade de execução paralela de consultas com a expressão “SELECT DISTINCT”.
  • O mecanismo para conectar tabelas externas Foreign Data Wrapper (postgres_fdw) implementa suporte para confirmações assíncronas, além da capacidade adicionada anteriormente de processar solicitações de forma assíncrona para servidores externos.
  • Adicionada a capacidade de usar algoritmos LZ4 e Zstandard (zstd) para compactar logs de transações WAL, que, sob algumas cargas de trabalho, podem melhorar simultaneamente o desempenho e economizar espaço em disco. Para reduzir o tempo de recuperação após uma falha, foi adicionado suporte para recuperação proativa de páginas que aparecem no log do WAL.
  • O utilitário pg_basebackup adicionou suporte para compactação de arquivos de backup no servidor usando os métodos gzip, LZ4 ou zstd. É possível usar seus próprios módulos para arquivamento, permitindo que você faça isso sem a necessidade de executar comandos shell.
  • Uma série de novas funções foram adicionadas para processar strings usando expressões regulares: regexp_count(), regexp_instr(), regexp_like() e regexp_substr().
  • A capacidade de agregar tipos multirange (“multirange”) foi adicionada à função range_agg().
  • Adicionado o modo security_invoker, que permite criar visualizações que são executadas como o usuário chamador em vez de o criador da visualização.
  • Para replicação lógica, foi implementado suporte para filtragem de linhas e especificação de listas de colunas, permitindo que o remetente selecione um subconjunto de dados da tabela para replicação. Além disso, a nova versão simplifica o gerenciamento de conflitos, por exemplo, agora é possível pular transações conflitantes e desabilitar automaticamente uma assinatura quando um erro for detectado. A replicação lógica permite o uso de commits de duas fases (2PC).
  • Um novo formato de log foi adicionado - jsonlog, que salva informações de forma estruturada usando o formato JSON.
  • O administrador tem a capacidade de delegar direitos individuais aos usuários para alterar determinados parâmetros de configuração do servidor PostgreSQL.
  • O utilitário psql adicionou suporte para pesquisar informações sobre configurações (pg_settings) usando o comando “\dconfig”.
  • A utilização de memória compartilhada é garantida para o acúmulo de estatísticas sobre o funcionamento do servidor, o que permite eliminar um processo separado de coleta de estatísticas e redefinição periódica do estado do disco.
  • A capacidade de usar as localidades padrão do ICU “ICU Collation” foi fornecida; anteriormente, apenas as localidades libc podiam ser usadas como localidade padrão.
  • Foi proposta uma extensão integrada pg_walinspect, que permite inspecionar o conteúdo de arquivos com logs WAL usando consultas SQL.
  • Para o esquema público, todos os usuários, com exceção do proprietário do banco de dados, tiveram sua autoridade para executar o comando CREATE revogada.
  • O suporte para Python 2 foi removido em PL/Python. O obsoleto modo de backup exclusivo foi removido.

Adição: Das 19h00 às 20h00 (MSK) haverá um webinar discutindo as mudanças na nova versão com Pavel Luzanov (Postgres Professional). Para aqueles que não puderem participar da transmissão, a gravação do relatório de junho de Pavel “PostgreSQL 15: MERGE e mais” na PGConf.Russia está aberta.

Fonte: opennet.ru

Adicionar um comentário