Na minha opinião, diferentemente das versões anteriores, o PostgreSQL 12 não contém um ou dois recursos revolucionários (como particionamento ou paralelismo de consulta). Certa vez brinquei que a principal característica do PostgreSQL 12 é maior estabilidade. Não é disso que você precisa ao gerenciar os dados críticos do seu negócio?
Mas o PostgreSQL 12 não para por aí: com novos recursos e melhorias, os aplicativos terão melhor desempenho, e tudo que você precisa fazer é atualizar!
(Bem, talvez reconstrua os índices, mas nesta versão não é tão assustador como estamos acostumados.)
Será ótimo atualizar o PostgreSQL e desfrutar imediatamente de melhorias significativas sem complicações desnecessárias. Há alguns anos, revisei uma atualização do PostgreSQL 9.4 para o PostgreSQL 10 e vi como o aplicativo acelerou graças ao paralelismo de consulta aprimorado no PostgreSQL 10. E, o mais importante, quase nada foi exigido de mim (basta definir um parâmetro de configuração max_parallel_workers
).
Concordo, é conveniente quando os aplicativos funcionam melhor imediatamente após uma atualização. E nos esforçamos muito para agradar os usuários, porque o PostgreSQL tem cada vez mais deles.
Então, como uma simples atualização para o PostgreSQL 12 pode deixar você feliz? Eu vou te contar agora.
Principais melhorias de indexação
Sem indexação, um banco de dados não irá longe. De que outra forma você pode encontrar informações rapidamente? O sistema de indexação fundamental do PostgreSQL é chamado
Simplesmente usamos o operador CREATE INDEX ON some_table (some_column)
, e o PostgreSQL trabalha muito para manter o índice atualizado enquanto inserimos, atualizamos e excluímos valores constantemente. Tudo funciona sozinho, como num passe de mágica.
Mas os índices do PostgreSQL têm um problema - eles
O PostgreSQL 12 melhora muito o desempenho dos índices de árvore B, e experimentos com benchmarks como TPC-C mostraram que, em média, 40% menos espaço é usado agora. Agora gastamos menos tempo não apenas na manutenção dos índices da árvore B (ou seja, nas operações de gravação), mas também na recuperação de dados, porque os índices são muito menores.
Aplicativos que atualizam ativamente suas tabelas - normalmente aplicativos OLTP (
Algumas estratégias de atualização exigem a reconstrução de índices de árvore B para aproveitar esses benefícios (por exemplo,
Existem outras melhorias na infraestrutura de indexação no PostgreSQL 12. Outra coisa onde havia alguma magia -
O PostgreSQL 12 reduziu a sobrecarga dos registros WAL criados pelos índices GiST, GIN e SP-GiST durante a construção do índice. Isso oferece vários benefícios tangíveis: os registros WAL ocupam menos espaço em disco e os dados são reproduzidos mais rapidamente, como durante a recuperação de desastres ou recuperação pontual. Se você usar esses índices em seus aplicativos (por exemplo, aplicativos geoespaciais baseados em PostGIS usam muito o índice GiST), esse é outro recurso que melhorará significativamente a experiência sem nenhum esforço de sua parte.
Particionamento – maior, melhor, mais rápido
PostgreSQL 10 introduzido
No PostgreSQL 12, o desempenho do sistema de particionamento tornou-se significativamente melhor, especialmente se houver milhares de partições na tabela. Por exemplo, se uma consulta afetar apenas algumas partições em uma tabela com milhares delas, ela será executada muito mais rapidamente. O desempenho não é melhorado apenas para esses tipos de consultas. Você também notará como as operações INSERT são mais rápidas em tabelas com múltiplas partições.
Gravando dados usando
Graças a essas vantagens, o PostgreSQL permite armazenar conjuntos de dados ainda maiores e torná-los mais fáceis de recuperar. E nenhum esforço de sua parte. Se o aplicativo tiver muitas partições, como gravação de dados de série temporal, uma simples atualização melhorará significativamente seu desempenho.
Embora isso não seja exatamente uma melhoria do tipo “atualizar e aproveitar”, o PostgreSQL 12 permite que você crie chaves estrangeiras que fazem referência a tabelas particionadas, tornando o trabalho com particionamento um prazer.
As consultas COM ficaram muito melhores
Quando
Muitas vezes descubro que os novatos em SQL adoram usar CTEs; se você os escrever de uma determinada maneira, realmente parece que você está escrevendo um programa imperativo. Pessoalmente, gostei de reescrever essas consultas para contornar sem CTE e aumentar a produtividade. Agora tudo é diferente.
O PostgreSQL 12 permite incorporar um tipo específico de CTE sem efeitos colaterais (SELECT
), que é usado apenas uma vez próximo ao final da solicitação. Se eu acompanhasse as consultas CTE que reescrevi, a maioria delas se enquadraria nesta categoria. Isso ajuda os desenvolvedores a escrever um código claro que agora também é executado rapidamente.
Além disso, o PostgreSQL 12 otimiza a própria execução do SQL, sem que você precise fazer nada. E embora provavelmente não precise otimizar essas consultas agora, é ótimo que o PostgreSQL continue trabalhando na otimização de consultas.
Just-in-Time (JIT) – agora padrão
Em sistemas PostgreSQL 12 com suporte
Como o JIT está habilitado por padrão no PostgreSQL 12, o desempenho melhorará por si só, mas recomendo testar o aplicativo no PostgreSQL 11, que introduziu o JIT, para medir o desempenho da consulta e ver se você precisa ajustar alguma coisa.
E quanto ao restante dos novos recursos do PostgreSQL 12?
O PostgreSQL 12 tem vários novos recursos interessantes, desde a capacidade de examinar dados JSON usando expressões de rota SQL/JSON padrão até autenticação multifator com um parâmetro clientcert=verify-full
, colunas criadas e muito mais. O suficiente para uma postagem separada.
Assim como o PostgreSQL 10, o PostgreSQL 12 melhorará o desempenho geral imediatamente após a atualização. Você, é claro, pode ter seu próprio caminho - testar o aplicativo em condições semelhantes no sistema de produção antes de habilitar melhorias, como fiz com o PostgreSQL 10. Mesmo que o PostgreSQL 12 já seja mais estável do que eu esperava, não seja preguiçoso nos testes aplicativos completamente, antes de liberá-los para produção.
Fonte: habr.com