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

PostgreSQL 11:o que há de novo


A mais recente e melhor versão do PostgreSQL, v11, será lançada ainda esta semana! Aqui está uma rápida olhada nos novos recursos desta versão.

Melhorias no particionamento


O maior conjunto de melhorias é para suporte de partição. O Postgres 11 suporta:
  • atualizar linhas pode movê-las entre partições
  • partições padrão
  • criação automática de índice
  • restrições de chave estrangeira são suportadas em tabelas particionadas
  • índices exclusivos
  • push de agregação em partições
  • partição por hash
  • particionar filhos em servidores remotos (postgres_fdw) pode ser atualizado
  • INSERT..ON CONFLICT é compatível com tabelas particionadas
  • planos de consulta mais eficientes e execução de consulta mais rápida

Leia mais sobre essas melhorias aqui.

Mais paralelismo


Há um monte de melhorias em toda a linha relacionadas ao aumento do paralelismo. Joins, unions, criação de tabelas e views com “CREATE..AS SELECT”, criação de índices btree e mais benefícios dessas mudanças.

Aqui está um artigo sobre melhorias de desempenho de criação de índice no Postgres 11.

Consultas em conformidade com JIT


Embora desabilitada por padrão no 11, a compilação de consultas JIT baseada em LLVM agora está incorporada ao Postgres. O servidor agora pode optar por compilar determinadas consultas (aquelas com estimativas de execução superiores a um limite) usando LLVM, resultando em consultas mais rápidas. Esta compilação é automática e transparente para a aplicação.

Aqui estão alguns números.

Cobertura de índices


Índices de cobertura, disponíveis em outros RDBMSes, mas não no PostgreSQL, foram adicionados agora. Com isso, é possível ter um índice assim (nova sintaxe):
CREATE INDEX empid_idx ON employees(empid) INCLUDE (empname);

Tal índice inclui atributos extras (aqui “empname”) no próprio índice e torna possível satisfazer consultas como:
SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;

inteiramente usando varreduras somente de índice e não tocar no heap.

Leia mais sobre a cobertura de índices aqui.

Procedimentos armazenados


Os procedimentos armazenados são mais uma instância do PostgreSQL jogando com outros RDBMSes. É claro que elas são semelhantes às funções armazenadas que o PostgreSQL suporta há muito tempo, mas a única grande coisa possível apenas usando procedimentos é o controle de transações. Você pode confirmar e reverter transações de procedimentos armazenados.

Dê uma olhada na documentação do CREATE PROCEDURE.

Adicionando colunas a tabelas


Alterar uma tabela para adicionar uma nova coluna NOT NULL com um valor DEFAULT era um pouco trabalhoso no PostgreSQL, pois isso fazia com que o servidor reescrevesse a tabela inteira. Com a v11 agora é possível ter instruções DDL como esta:
ALTER TABLE users ADD COLUMN foo_factor integer NOT NULL DEFAULT 42;

executar em tempo constante. As linhas não são tocadas quando isso é executado e, em vez disso, são atualizadas “preguiçosamente”.

Leia mais sobre esse recurso aqui.

Funções SHA


E, finalmente, aqueles de vocês que usaram o pgcrypto apenas para funções SHA agora podem mudar para as funções incorporadas no PostgreSQL 11:
bench=# \df pg_catalog.sha*
                          List of functions
   Schema   |  Name  | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+------
 pg_catalog | sha224 | bytea            | bytea               | func
 pg_catalog | sha256 | bytea            | bytea               | func
 pg_catalog | sha384 | bytea            | bytea               | func
 pg_catalog | sha512 | bytea            | bytea               | func
(4 rows)

bench=# SELECT sha256('hello');
                               sha256
--------------------------------------------------------------------
 \x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
(1 row)