O grupo de desenvolvedores do PostgreSQL anunciou o lançamento do PostgreSQL 12, a mais nova versão do sistema de gerenciamento de banco de dados relacional de código aberto.
No PostgreSQL 12, o desempenho das consultas foi significativamente aprimorado – especialmente no que diz respeito ao trabalho com grandes volumes de dados, além de otimizações no uso do espaço em disco como um todo.
Entre as novas funcionalidades:
- implementação da linguagem de consulta JSON Path (parte fundamental do padrão SQL/JSON);
- otimização da execução de expressões de tabela comuns (WITH);
- suporte a colunas geradas
Além disso, a comunidade continua a trabalhar na extensibilidade e confiabilidade do PostgreSQL, desenvolvendo o suporte à internacionalização, opções de autenticação, e proporcionando caminhos mais simples para a administração do sistema.
Esta versão incluiu a implementação de uma interface de armazenamentos plug-in, permitindo que os desenvolvedores criem seus próprios métodos de armazenamento de dados.
Melhorias de desempenho
O PostgreSQL 12 inclui melhorias significativas de desempenho e procedimentos de manutenção para sistemas de indexação e particionamento.
Os índices B-tree — o tipo padrão de indexação no PostgreSQL — foram otimizados na versão 12 para cargas de trabalho que exigem modificações frequentes nos índices. O uso do teste de referência TPC-C para o PostgreSQL 12 demonstrou uma redução no uso de espaço de cerca de 40% e um aumento geral no desempenho das consultas.
As consultas a tabelas particionadas receberam melhorias notáveis, especialmente para tabelas compostas por milhares de seções, permitindo trabalhar apenas com partes limitadas de grandes conjuntos de dados. O desempenho na inserção de dados em tabelas particionadas através de INSERT e COPY foi melhorado, assim como a capacidade de anexar uma nova seção sem bloquear as consultas em execução.
No PostgreSQL 12, foram feitas melhorias adicionais na indexação que afetam o desempenho geral, incluindo:
- redução da sobrecarga na geração de WAL para tipos de índices GiST, GIN e SP-GiST;
- capacidade de criar os chamados índices de cobertura (covering indexes, proposta INCLUDE) em índices GiST;
- capacidade de executar consultas de 'vizinhos mais próximos' (k-NN search) usando o operador de distância () e a utilização de índices SP-GiST;
- suporte para a coleta de estatísticas dos valores mais comuns (most-common value, MCV) com o uso de CREATE STATISTICS, ajudando a obter melhores planos de execução de consultas ao usar colunas cujos valores estão distribuídos de maneira desigual.
A compilação JIT com uso de LLVM, que surgiu no PostgreSQL 11, agora está ativada por padrão. A compilação JIT aumenta o desempenho ao trabalhar com expressões nas cláusulas WHERE, nas listas de seleção, em agregações e em algumas operações internas. Ela está disponível se você compilou o PostgreSQL com LLVM ou está usando um pacote do PostgreSQL que foi criado com o LLVM ativado.
Melhorias nas capacidades da linguagem SQL e na compatibilidade com o padrão.
No PostgreSQL 12, agora é possível realizar consultas em documentos JSON utilizando expressões de caminho JSON definidas no padrão SQL/JSON. Essas consultas podem usar os mecanismos de indexação existentes para documentos armazenados no formato JSONB, permitindo a extração de dados de forma eficiente.
As expressões de tabela comuns, também conhecidas como consultas WITH, no PostgreSQL 12 agora podem ser executadas automaticamente com a aplicação de substituição, o que, por sua vez, pode ajudar a aumentar o desempenho de muitas consultas existentes. Na nova versão, uma parte da consulta WITH pode ser executada com substituição, desde que não seja recursiva, não tenha efeitos colaterais e seja referenciada apenas uma vez na parte subsequente da consulta.
O PostgreSQL 12 introduz o suporte a "colunas geradas". Descrita no padrão SQL, esse tipo de coluna calcula um valor com base no conteúdo de outras colunas na mesma tabela. Nesta versão, o PostgreSQL suporta "colunas geradas armazenadas", nas quais o valor calculado é armazenado em disco.
Internacionalização
O PostgreSQL 12 amplia o suporte a correspondências ICU, permitindo que os usuários definam "correspondências indeterminadas", que podem, por exemplo, permitir comparações sem levar em conta a caixa ou a acentuação.
Autenticação
O PostgreSQL expande seu suporte a métodos de autenticação robustos com várias melhorias que oferecem segurança e funcionalidade adicionais. Nesta versão, a criptografia do lado do cliente e do lado do servidor para autenticação através de interfaces GSSAPI é apresentada, assim como a capacidade do PostgreSQL de detectar servidores LDAP, se o PostgreSQL foi compilado com OpenLDAP.
Além disso, o PostgreSQL 12 agora suporta a variante de autenticação multifatorial. Agora, o servidor PostgreSQL pode solicitar que o cliente forneça um certificado válido. SSL-certificado com um nome de usuário correspondente usando clientcert=verify-full, e combinar isso com a exigência separada de um método de autenticação (por exemplo, scram-sha-256).
Administração
No PostgreSQL 12, há a possibilidade de realizar a reconstrução não bloqueante de índices usando o comando REINDEX CONCURRENTLY. Isso permite que os usuários evitem interrupções na operação do SGBD durante a reconstrução prolongada de índices.
Além disso, no PostgreSQL 12, é possível ativar ou desativar as somas de verificação das páginas em um cluster que está desligado, usando o comando pg_checksums. Anteriormente, as somas de verificação das páginas — uma função que ajuda a verificar a integridade dos dados armazenados no disco — só podiam ser ativadas no momento da inicialização do cluster PostgreSQL com o initdb.
Fonte: linux.org.ru
