PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Recursos do PostgreSQL Enterprise novos e em evolução com versões recentes

O PostgreSQL também introduziu muitos outros recursos inovadores nas versões 10 a 11, 12 e 13 que o tornam um verdadeiro concorrente do Oracle, como aprimoramentos de particionamento, consulta paralela e replicação lógica. Nesta postagem do blog, mostraremos alguns dos novos e notáveis ​​recursos do PostgreSQL incluídos nas versões mais recentes do PostgreSQL.

Recursos de particionamento

Particionamento declarativo

Até o PostgreSQL versão 9.4, não havia particionamento real no PostgreSQL. Isso foi alcançado apenas por meio de herança de tabela, que oferecia funcionalidade e benefícios de desempenho muito limitados. Grande parte da funcionalidade é gerenciada manualmente por meio de gatilhos ou comandos SQL. Por exemplo, tivemos que usar gatilhos para direcionar uma linha antes de INSERT para a partição correta. Temos que criar índices para cada partição separadamente. O PostgreSQL versão 10 deu origem ao particionamento declarativo, mas ainda tivemos que criar restrições e índices para cada partição.

O PostgreSQL 11 vem completo com um conjunto impressionante de novos recursos de particionamento para ajudar a melhorar o desempenho e também para ajudar a tornar as tabelas particionadas mais transparentes para os aplicativos.

Replicação lógica de tabelas particionadas

Com o PostgreSQL 13, eles introduziram suporte para replicação lógica de tabelas particionadas. Anteriormente, você era forçado a replicar partições para seus standbys individualmente. Agora, no entanto, você pode replicar automaticamente todas as suas partições ao mesmo tempo

Métodos de particionamento

Os métodos de particionamento atualmente suportados são intervalo, lista e hash.

Chaves e índices

Suporte completo para chaves estrangeiras em tabelas particionadas foi adicionado no PostgreSQL 12. O PostgreSQL também oferece suporte para chaves primárias, índices e gatilhos em tabelas particionadas.

Partição padrão

O PostgreSQL permite a criação de uma partição “default” para armazenar dados que não correspondem a nenhuma das partições restantes. Os usuários do Oracle vão adorar esse recurso, pois ele não está disponível no Oracle Database.

Movimento da linha

As instruções UPDATE que alteram uma coluna de chave de partição agora fazem com que as linhas afetadas sejam movidas para as partições apropriadas.

Remoção de Partições

Melhore o desempenho do SELECT por meio de estratégias aprimoradas de eliminação de partições durante o planejamento e a execução de consultas. Um novo método de realizar a eliminação de partição foi adicionado. Esse novo algoritmo é capaz de determinar partições correspondentes observando a cláusula WHERE da consulta. O algoritmo anterior verificou cada partição, por sua vez, para ver se ela poderia corresponder à cláusula WHERE da consulta. Isso resultou em um aumento adicional no tempo de planejamento à medida que o número de partições crescia.

Remoção de partição durante a execução da consulta

Quanto às instruções preparadas, os parâmetros de consulta não são conhecidos antes da execução. O Query Planner não pode eliminar partições durante a fase de planejamento, pois os parâmetros não são conhecidos. Assim, o executor faz a remoção da partição durante a execução para acessar apenas as partições que correspondem aos parâmetros.
Novos recursos corporativos do PostgreSQL em evolução com lançamentos recentesClick To Tweet

Recursos de indexação

Índice de cobertura

O PostgreSQL agora permite adicionar colunas não chave no índice btree. Como as consultas geralmente precisam recuperar mais colunas do que apenas aquelas em que pesquisam, o PostgreSQL permite que você crie um índice no qual algumas colunas são apenas “carga útil” e não fazem parte da chave de pesquisa. Ele ajuda a fazer apenas varreduras somente de índice para recuperar as linhas necessárias.

Reindexar simultaneamente

A partir do PostgreSQL 12, é possível reconstruir um índice com REINDEX CONCURRENTLY sem travar a tabela para leitura/gravação, assim como o comando Oracle REBUILD INDEX.

Criação de índice paralelo

Com a criação de índice paralelo (introduzido no PostgreSQL 11, atualmente aplicável apenas para índices b-tree), os índices podem ser criados mais rapidamente até o valor max_parallel_workers e definindo maintenance_work_mem grande o suficiente para conter vários cópias de dados. A criação de índice paralelo pode reduzir significativamente o tempo de criação do índice.

Desduplicação de dados em índices B-Tree

Às vezes haverá entradas duplicadas em um índice. Isso significa que um nó folha em um índice B-Tree com pelo menos duas entradas de índice no mesmo índice contém os mesmos dados para todas as colunas de índice. Com a adição da desduplicação no PostgreSQL 13, você pode agrupar essas entradas de índice B-Tree duplicadas e reuni-las em uma entrada de grupo. O benefício disso é economizar espaço e reduzir a carga no disco e na RAM, pois você não precisará duplicar os dados da coluna. Entradas duplicadas também causam inchaço indesejado no índice.

Autenticação

SCRAM-SHA-256

No PostgreSQL 11 veio o suporte para autenticação de senha SCRAM-SHA-256. Esse método evita a detecção de senhas em conexões não confiáveis ​​e permite que você armazene suas senhas em um formato criptograficamente hash.

De todos os métodos de autenticação de senha atualmente suportados, este é o mais seguro.

GSSAPI

O GSSAPI permite autenticação segura, bem como login único automático para sistemas que o suportam. Esse método de autenticação depende de uma biblioteca de segurança compatível com GSSAPI. Os dados enviados pela conexão do banco de dados não serão criptografados, a menos que SSL seja usado; no entanto, a autenticação em si é segura. GSSAPI com autenticação Kerberos é possível com PostgreSQL de acordo com os padrões da indústria. Quando o Kerberos é usado, um principal padrão é usado no formato “servicename/hostname@realm”. Qualquer principal incluído no keytab usado pelo servidor será aceito pelo servidor PostgreSQL.

LDAP

Operando de forma semelhante à autenticação por senha, este método de autenticação usa LDAP como método de verificação. Ele é usado apenas para validar pares de nome de usuário e senha, portanto, o usuário já deve existir no banco de dados para que a autenticação funcione. A autenticação LDAP opera em um modo de ligação simples ou no que é chamado de pesquisa + ligação. Search+bind permite que você use outros identificadores em comparação com o modo de ligação simples, que permite que apenas o nome distinto, nome de domínio ou e-mail seja usado.

Certificado

O método de autenticação de certificado usa certificados SSL para autenticar. Consequentemente, está disponível apenas para conexões SSL. Com a autenticação de certificado, nenhuma senha é necessária. O cliente simplesmente precisa fornecer um certificado válido e confiável para poder autenticar. O nome comum do certificado será combinado com o nome de usuário do banco de dados e, se uma correspondência for encontrada, o cliente será conectado.

Outros recursos notáveis

Vácuo Paralelo

Com o lançamento do PostgreSQL 13, foram implementadas melhorias no comando VACUUM. A melhoria em questão é a opção de parâmetro adicionado PARALLEL. Com PARALLEL, você pode executar as fases de vácuo de índice e limpeza de índice de VACUUM. Isso permite que você limpe em paralelo vários índices correspondentes a uma única tabela.

Consulta paralela

A maioria das consultas do Reports, que geralmente verificam muitos dados, sofre degradação de desempenho devido à necessidade de verificar ou agregar dados de muitas linhas, mesmo com uma verificação de índice. Essas consultas podem usar apenas uma CPU até a versão 9.4 e ser executadas em série.

Com consulta paralela (que oferece varredura sequencial paralela, junção de mesclagem, junção de hash, agregação e outros recursos de plano de consulta paralela), essas consultas podem aproveitar vários trabalhadores e o desempenho pode melhore de 2x para 10x conforme documentação.

Confira esta postagem para saber quando usar consultas paralelas.

Replicação lógica nativa

O PostgreSQL introduziu a replicação lógica nativa na versão 10 para fornecer uma opção de replicação mais flexível, diferente da replicação de streaming e mais como o Oracle Streams, para replicar tabelas, colunas ou linhas específicas. Isso pode ser usado para dividir entre vários bancos de dados ou consolidar de vários bancos de dados. E também pode replicar entre diferentes versões principais do PostgreSQL.

Procedimentos armazenados com transações incorporadas

Mais uma adição que torna o PostgreSQL compatível para migrações do banco de dados Oracle.

Não temos nenhum controle de transação dentro do programa pgsql (bloco ou função DO) na versão 9.4, e temos que usar uma solução alternativa como dblink para iniciar e confirmar/reverter transações .

Com os procedimentos armazenados, que foram lançados na versão 11, agora podemos implementar o controle de transações em qualquer estrutura do pgsql como loop while, loop for ou instrução if else. Embora os procedimentos armazenados sejam semelhantes às funções, eles precisam ser invocados pelo comando CALL e podem funcionar como programas independentes.

Colunas geradas

Assim como o banco de dados Oracle, as colunas geradas no PostgreSQL podem armazenar os dados calculados automaticamente de outras colunas dentro da linha. Isso acelera as consultas por não precisar calcular o valor durante a execução da consulta e, em vez disso, o valor da coluna gerada é calculado em INSERT ou UPDATE na linha.

Compilação JIT

Todos os PostgreSQL 11, 12 e 13 suportam a compilação Just-in-Time (JIT), que foi adicionada em 2018. A compilação JIT é o processo de transformar uma avaliação de programa interpretado em um programa nativo. Com a compilação JIT, esse processo pode ser feito em tempo de execução. Uma vantagem do JIT é a possibilidade de gerar funções específicas de expressões que a CPU pode executar nativamente. Por sua vez, o processo lhe dá uma aceleração.

Soma de verificação de página

As somas de verificação de página são um recurso que ajuda a verificar a integridade dos dados armazenados em disco. Anteriormente, você só podia habilitar as somas de verificação de página durante a inicialização de um cluster PostgreSQL. O PostgreSQL 12 introduziu a capacidade de habilitar ou desabilitar somas de verificação de página em um cluster offline por meio do comando pg_checksums.

Resumo

Como você pode ver neste artigo, o PostgreSQL é um sistema de banco de dados em constante evolução que traz muitos recursos poderosos para a mesa. Cada nova versão adiciona novos recursos interessantes que o tornam um verdadeiro concorrente de outros bancos de dados, como o Oracle. Seus recursos de particionamento e indexação recebem muitas novas atualizações que são adicionadas à sua caixa de ferramentas já expansiva.

Se você estiver procurando por uma solução gerenciada para seu banco de dados PostgreSQL, sinta-se à vontade para conferir nosso serviço ScaleGrid for PostgreSQL. Oferecemos uma avaliação gratuita de 30 dias que permite que você use todos os nossos recursos de gerenciamento sem restrições. O preço começa em apenas US$ 10/mês e oferece acesso a uma solução de hospedagem PostgreSQL de nível empresarial totalmente gerenciada com suporte 24 horas por dia, 7 dias por semana.