Versão do SGBD PostgreSQL 14

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

Principais inovações:

  • Adicionado suporte para acessar dados JSON usando expressões semelhantes a array: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM teste WHERE detalhes['atributos']['tamanho'] = '"meio"';

    Uma sintaxe semelhante é implementada para os dados de chave/valor fornecidos pelo tipo hstore. Esta sintaxe foi inicialmente implementada utilizando um framework universal, que futuramente poderá ser utilizado para outros tipos. Exemplo para tipo hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM minhatabela; UPDATE minhatabela SET h['c'] = 'new';

  • A família de tipos para definir intervalos foi expandida com novos tipos “multirange”, que permitem especificar listas ordenadas de intervalos de valores não sobrepostos. Além de cada tipo de intervalo existente, é proposto o seu próprio tipo multirange, por exemplo, o tipo “int4range” corresponde a “int4multirange” e o tipo “daterange” corresponde a “datemultirange”. O uso de novos tipos simplifica o design de consultas que manipulam sequências complexas de intervalos. SELECIONE '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Otimizações foram feitas para melhorar o desempenho de sistemas de alta carga que processam um grande número de conexões. Em alguns testes, é observado um aumento duplo no desempenho.
  • A eficiência dos índices de árvore B foi melhorada e o problema com o crescimento do índice quando as tabelas são atualizadas com frequência foi resolvido.
  • Adicionado suporte para o modo de transmissão de solicitações do lado do cliente (implementado no nível libpq), que permite acelerar significativamente os cenários de banco de dados associados à execução de um grande número de pequenas operações de gravação (INSERT/UPDATE/DELETE) enviando o próxima solicitação sem esperar o resultado da anterior. O modo também ajuda a acelerar o trabalho em conexões com longos atrasos na entrega de pacotes.
  • Recursos aprimorados para configurações distribuídas envolvendo vários servidores PostgreSQL. Na implementação da replicação lógica, agora é possível enviar em modo streaming transações que estão em processo de execução, o que pode melhorar significativamente o desempenho da replicação de grandes transações. Além disso, a decodificação lógica dos dados recebidos durante a replicação lógica foi otimizada.
  • O mecanismo para conectar tabelas externas Foreign Data Wrapper (postgres_fdw) adicionou suporte para processamento de consultas paralelas, que atualmente só é aplicável ao conectar-se a outros servidores PostgreSQL. postgres_fdw também adiciona suporte para adição de dados a tabelas externas em modo batch e a capacidade de importar tabelas particionadas especificando a diretiva “IMPORT FOREIGN SCHEMA”.
  • Foram feitas otimizações na implementação da operação VACUUM (coleta de lixo e empacotamento de armazenamento em disco). Foi adicionado um modo de limpeza de emergência que ignora operações de limpeza não essenciais se condições de encapsulamento de ID de transação forem criadas. Sobrecarga reduzida ao processar índices no formato B-Tree. A execução da operação “ANALYZE”, que coleta estatísticas sobre o funcionamento da base de dados, foi significativamente acelerada.
  • Adicionada a possibilidade de configurar o método de compressão utilizado no sistema TOAST, responsável por armazenar grandes dados, como blocos de texto ou informações geométricas. Além do método de compactação pglz, o TOAST agora pode usar o algoritmo LZ4.
  • As ferramentas de monitoramento do funcionamento do SGBD foram ampliadas. Adicionadas visualizações para rastrear o progresso dos comandos COPY (pg_stat_progress_copy), estatísticas sobre slots de replicação (pg_stat_replication_slots) e atividades relacionadas ao log de transações WAL (pg_stat_wal). A função compute_query_id foi adicionada, o que permite que vários subsistemas, como pg_stat_activity e EXPLAIN VERBOSE, rastreiem solicitações atribuindo um identificador exclusivo para cada solicitação.
  • Otimizações foram adicionadas ao planejador de consultas para melhorar o processamento paralelo de consultas e melhorar o desempenho da execução simultânea de operações de varredura de registros sequenciais, execução paralela de consultas em PL/pgSQL usando o comando “RETURN QUERY” e execução paralela de consultas em “ ATUALIZAR VISÃO MATERIALIZADA”. Para melhorar o desempenho de mesclagens aninhadas cíclicas (junção), foi implementado suporte para cache adicional.
  • Estatísticas avançadas agora podem ser usadas para otimizar expressões e classificação incremental agora pode ser usada para otimizar funções de janela.
  • Os procedimentos armazenados que permitem gerenciar transações em blocos de código agora suportam a definição de dados de retorno usando parâmetros "OUT".
  • Adicionada função date_bin para arredondar valores de carimbo de data/hora de acordo com um intervalo especificado. SELECT date_bin('15 minutos', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020/02/11 15:30:00
  • Adicionadas expressões SEARCH e CYCLE definidas no padrão SQL para facilitar a ordenação e identificação de ciclos em Common Table Expressions (CTE) recursivas. COM RECURSIVO search_tree (id, link, dados) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link) PROFUNDIDADE DE PESQUISA PRIMEIRO POR id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • No utilitário psql, o preenchimento automático de comandos com tabulações foi melhorado, a capacidade de exibir argumentos de função foi adicionada ao comando “\df” e as estatísticas exibidas foram expandidas para o comando “\dX”.
  • É possível atribuir privilégios somente leitura ou somente gravação aos usuários. Os privilégios podem ser definidos em tabelas, visualizações e esquemas individuais usando as funções predefinidas pg_read_all_data e pg_write_all_data. GRANT pg_read_all_data PARA usuário1;
  • Novas instalações usam como padrão autenticação por senha usando SCRAM-SHA-256 em vez de md5 (o parâmetro "password_encryption" ao gerar postgresql.conf agora está definido como 'scram-sha-256').

Fonte: opennet.ru

Adicionar um comentário