De acordo com o StackOverflow, o PostgreSQL é o banco de dados de código aberto mais popular, com cada vez mais desenvolvedores e administradores querendo trabalhar com ele. O PostgreSQL 14, a versão mais recente lançada em setembro de 2021, possui mais de 200 melhorias e novos recursos, que se dividem em três áreas:Segurança, Desempenho e Monitoramento.
A partir da versão 1.9.2, lançada no início deste ano, o ClusterControl agora suporta a versão mais recente do PostgreSQL 14.
Neste post, veremos os recursos mais notáveis, as principais atualizações e melhorias disponíveis no PostgreSQL 14.
Segurança
A mudança de segurança mais significativa do PostgreSQL 14 é migrar para SCRAM como a autenticação padrão depois que a autenticação SCRAM-SHA-256 foi introduzida pela primeira vez no PostgreSQL 10. O SCRAM fornece uma solução muito mais simples e poderosa para regular a conformidade de dados segurança. A autenticação MD5 padrão anterior teve alguns pontos fracos explorados no passado.
Além da autenticação aprimorada, o PostgreSQL 14 simplifica o processo de atribuição de recursos somente leitura e gravação aos usuários em tabelas, exibições e esquemas, introduzindo duas funções predefinidas, pg_write_all_data e pg_read_all_data. A função anterior torna conveniente criar privilégios no estilo de superusuário. Apesar de ser conveniente para atividades e acesso, esse tipo de conta deve ser usado com moderação. A última função facilita a concessão de acesso somente leitura para um usuário a todas as tabelas, esquemas e exibições no banco de dados. Essa função terá acesso de leitura por padrão a todas as tabelas recém-criadas.
Desempenho
As corporações estão processando cada vez mais dados, e a velocidade, o volume e a variedade (os três Vs do Big Data) não mostram sinais de desaceleração. O PostgreSQL 14 fez algumas mudanças muito significativas para poder escalar e expandir para dar suporte a essas cargas de trabalho e melhorar o desempenho. Isso pode ser melhor agrupado nas cinco áreas a seguir:
Escalabilidade e desempenho
O PostgreSQL 14 oferece grandes conquistas no desempenho de exclusões e atualizações em tabelas com um grande número de partições. Isso permite que exclusões e atualizações em tabelas particionadas usem a remoção de partição em tempo de execução. Mais importante ainda, esta versão pode ser dimensionada para mais partições do que antes, permitindo que o PostgreSQL lide com bancos de dados muito maiores do que era possível anteriormente.
No PostgreSQL versão 14, as partições agora também podem ser desanexadas simultaneamente, facilitando o gerenciamento de grandes tabelas de dados de séries temporais. Isso é possível devido à nova função date_bin(), que permite aos usuários resumir dados de séries temporais em intervalos de datas de maneira melhor e mais fácil.
PostgreSQL 14 adicionou suporte para compactação LZ4 para TOAST. O LZ4 usa a mais recente tecnologia de compactação e se concentra em melhorar a velocidade de descompactação e compactação de dados de documentos. O LZ4 aprimorará os aplicativos com documentos XML e JSON maiores, e esse algoritmo de compactação pode ser configurado nos níveis de sistema e de coluna.
Bancos de dados distribuídos e cargas de trabalho
O PostgreSQL 14 também oferece melhorias no dimensionamento horizontal de um banco de dados, introduzindo dois aprimoramentos principais no postgres_fdw (empacotador de dados estrangeiros) que são fundamentais para melhorar o desempenho de bancos de dados distribuídos. Essas alterações dão suporte à inserção em massa de dados e varreduras de tabela paralela em tabelas externas (quando async_capable é definido).
O cache de conexão também melhora o desempenho, permitindo que as conexões sejam abertas entre transações. Também podemos citar o modo pipeline Libpd, que aumenta o desempenho de bancos de dados distribuídos, permitindo que fluxos de alterações sejam transmitidos sem esperar pela confirmação da rede em cada comando.
Gerenciamento
O PostgreSQL 14 também aborda a questão do inchaço do índice da árvore B; índices que são atualizados com frequência incham ao longo do tempo devido a tuplas mortas que podem ser removidas executando um vácuo.
Devido a isso, uma divisão de página irreversível pode ser causada por uma inserção ou atualização quando a página é preenchida entre vácuos. Esta versão aprimorou o processo de vácuo detectando e removendo tuplas mortas entre vácuos (parâmetro INDEX_CLEANUP definido como Auto).
Outra melhoria no sistema de vácuo é remover as páginas excluídas rapidamente. Nas versões anteriores, a remoção de páginas excluídas levava dois ciclos de vácuo, primeiro marcando a página como excluída e o segundo ciclo realmente liberando esse espaço.
Ajuste de desempenho de consulta e índice
O gerenciamento de índice no ajuste de aplicativos é outra grande melhoria no PostgreSQL 14. Particularmente, REINDEX CONCURRENTLY e CREATE INDEX CONCURRENTLY, permitem que vários comandos sejam executados ao mesmo tempo sem interferir um no outro. Mais sobre índices, os índices BRIN tornaram-se mais flexíveis, pois podem registrar vários valores mínimo/máximo por intervalo, o que é valioso para grupos de valores em cada intervalo de páginas. Além disso, os índices BRIN funcionam efetivamente com dados não bem localizados no heap usando filtros bloom.
A opção FREEZE no comando COPY foi aprimorada pela atualização dos bits de visibilidade da página no desempenho do carregamento de dados. COPY em modo binário também é agora mais rápido.
O PostgreSQL 14 refinou o paralelismo de consulta adicionando paralelismo de consulta a REFRESH MATERIALIZED VIEW e RETURN QUERY. Essas melhorias foram implementadas em junções de loop aninhadas e varreduras sequenciais paralelas.
O PostgreSQL 14 aumentou o número de lugares em que estatísticas estendidas podem ser usadas para expressões e estimativa de cláusula OR. Ao contrário de anteriormente, onde as estatísticas eram apenas em colunas, agora é permitido em um grupo de expressões. A visualização do sistema pg_stats_ext_exprs relata tais estatísticas.
Replicação lógica aprimorada
A replicação lógica foi aprimorada para permitir o streaming de transações longas em andamento por meio da API ou para assinantes. Nas versões anteriores, transações maiores que logical_decoding_work_mem eram gravadas em disco até que a transação fosse concluída antes de replicar a transação para o assinante. Com os novos aprimoramentos implementados, a replicação lógica lida com grandes volumes de instruções DDL com mais eficiência.
Após cada comando, a replicação lógica grava mensagens de invalidação de cache no WAL para processamento por streaming de transações em andamento. Esse processo cria benefícios de desempenho significativos.
Monitoramento
Um dos maiores chavões de 2022 é monitoramento, pois administradores e desenvolvedores querem mais informações sobre o desempenho ao longo do tempo. O PostgreSQL 14 introduziu novos recursos para ajudar no monitoramento. A mudança mais significativa de todas é a mudança do sistema de hash de consulta do pg_stat_statement para o banco de dados núcleo. O monitoramento de consultas foi permitido em vários sistemas PostgreSQL e funções de registro usando um único ID.
Esta versão também introduziu os seguintes novos parâmetros de monitoramento:
-
Idle_session_timeout
-
REINDEX em índices filho de uma tabela particionada
-
Maintenance_io_concurrency
-
Pg_stat_progress_copy
-
Pg_stat_wal
Atualizando para o PostgreSQL 14
Se você deseja atualizar sua versão atual do PostgreSQL para a versão 14, você tem três opções principais que realizarão esta tarefa:
-
Pg_dumpall:É uma ferramenta de backup lógico que permite despejar seus dados e restaurá-los no novo PostgreSQL versão. Aqui você terá um período de inatividade que irá variar de acordo com o tamanho dos seus dados. Você precisa parar o sistema ou evitar novos dados no nó primário, executar o pg_dumpall, mover o dump gerado para o novo nó do banco de dados e restaurá-lo. Durante esse tempo, você não pode escrever em seu banco de dados PostgreSQL primário para evitar inconsistência de dados.
-
Pg_upgrade:É uma ferramenta do PostgreSQL para atualizar sua versão do PostgreSQL. Pode ser perigoso em um ambiente de produção e não recomendamos esse método nesse caso. Usando este método, você terá tempo de inatividade, mas provavelmente será consideravelmente menor do que usando o método pg_dump anterior.
-
Replicação lógica:Desde o PostgreSQL 10, você pode usar este método de replicação que permite realizar atualizações de versão principal com tempo de inatividade zero (ou quase zero). Dessa forma, você pode adicionar um nó de espera na última versão do PostgreSQL e, quando a replicação estiver atualizada, poderá realizar um processo de failover para promover o novo nó do PostgreSQL.
Para informações mais detalhadas sobre os novos recursos do PostgreSQL 14, você pode consultar a Documentação Oficial.
Encerrando
O PostgreSQL 14 realmente melhorou o jogo para os usuários deste popular banco de dados de código aberto. Agora, desenvolvedores e administradores têm recursos aprimorados para aumentar o alto desempenho e a escalabilidade, aprimoramentos para bancos de dados distribuídos, observabilidade aprimorada e muito mais.
O ClusterControl torna a atualização para as versões de tecnologia mais recentes simples e sem estresse. Se você ainda não estiver usando o ClusterControl, poderá avaliá-lo gratuitamente por 30 dias. Para obter mais detalhes sobre a versão mais recente do ClusterControl 1.9.2, confira as notas de versão completas.
Mantenha-se atualizado com as últimas notícias e práticas recomendadas para os bancos de dados de código aberto mais populares, seguindo-nos no Twitter e LinkedIn e assinando nosso boletim informativo.