Após um ano de desenvolvimento, uma nova ramificação estável do SGBD PostgreSQL 15 foi lançada. Atualizações para a nova ramificação serão lançadas ao longo de cinco anos até novembro de 2027.
Principais novidades:
- Adicionada a suporte ao comando SQL "MERGE", semelhante à expressão "INSERT … ON CONFLICT". O MERGE permite criar expressões SQL condicionais, combinando em uma única expressão as operações INSERT, UPDATE e DELETE. Por exemplo, com o MERGE é possível organizar a mesclagem de 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 WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Os algoritmos de ordenação de dados em memória e em disco foram significativamente aprimorados. Dependendo do tipo de dados, os testes mostram um aumento na velocidade de ordenação de 25% a 400%.
- A execução das funções de janela utilizando row_number(), rank(), dense_rank() e count() foi acelerada.
- Implementada a possibilidade de execução paralela de consultas com a expressão "SELECT DISTINCT".
- No mecanismo de conexão a tabelas externas Foreign Data Wrapper (postgres_fdw), foi implementado suporte a commits assíncronos além da funcionalidade de processamento assíncrono de consultas a servidores externos já adicionada anteriormente.
- Adicionada a capacidade de aplicar os algoritmos LZ4 e Zstandard (zstd) para compressão de logs WAL de transações, o que, em certas cargas, permite aumentar o desempenho e economizar espaço em disco. Para reduzir o tempo de recuperação após falhas, foi adicionado suporte para a extração antecipada de páginas mencionadas no log WAL.
- Na ferramenta pg_basebackup, foi adicionada a suporte para compressão de arquivos de backup no lado do servidor, utilizando métodos gzip, LZ4 ou zstd. Foi fornecida a possibilidade de usar módulos próprios para arquivamento, evitando a necessidade de executar comandos shell. servidorAdicionada uma série de novas funções para manipulação de strings usando expressões regulares: regexp_count(), regexp_instr(), regexp_like() e regexp_substr().
- Na função range_agg(), foi adicionada a capacidade de agregar tipos multidiapasónicos ("multirange").
- Adicionado o modo security_invoker, permitindo a criação de visões executadas com os direitos do usuário chamador, e não do criador da visão.
- Foi introduzido o modo security_invoker, permitindo a criação de visões executadas com os direitos do usuário que invoca, e não do criador da visão.
- A replicação lógica agora suporta a filtragem de linhas e a definição de listas de colunas, permitindo ao remetente selecionar um subconjunto de dados da tabela para replicação. Além disso, na nova versão, a gestão de conflitos foi simplificada, por exemplo, agora é possível ignorar transações conflitantes e desativar automaticamente a assinatura ao detectar um erro. A replicação lógica agora permite o uso de commits de duas fases (2PC).
- Adicionado um novo formato de logs — jsonlog, que salva informações de forma estruturada, utilizando o formato JSON.
- O administrador agora pode delegar a usuários permissões específicas para alterar certos parâmetros. configurações do servidor PostgreSQL.
- A ferramenta psql agora suporta a busca de informações sobre configurações (pg_settings) usando o comando "\dconfig".
- Implementado o uso de memória compartilhada para acumulação de estatísticas do servidor, eliminando a necessidade de um processo separado para coleta de estatísticas e descarregamento periódico para o disco.
- Agora é possível usar as configurações regionais ICU "ICU Collation" como padrão, anteriormente apenas as configurações libc podiam ser usadas como padrão.
- Foi introduzida a extensão integrada pg_walinspect, que permite inspecionar o conteúdo de arquivos de logs WAL usando consultas SQL.
- Para o esquema public, as permissões para executar o comando CREATE foram revogadas de todos os usuários, exceto o proprietário do BD.
- No PL/Python, o suporte ao Python 2 foi removido. O modo de backup exclusivo obsoleto também foi eliminado.
Adicional: Das 19:00 às 20:00 (MSK), haverá um webinar-discussão sobre as mudanças na nova versão com Pavel Luzanov (Postgres Professional). Para aqueles que não puderem se juntar ao ao vivo, a gravação da palestra de junho de Pavel "PostgreSQL 15: MERGE e muito mais" está disponível no PGConf.Russia.
Fonte: opennet.ru
