PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL 11:cosa c'è di nuovo

L'ultima e più grande versione di PostgreSQL, v11, uscirà questa settimana! Ecco una rapida occhiata alle nuove funzionalità di questa versione.

Miglioramenti al partizionamento

Il più grande insieme di miglioramenti riguarda il supporto delle partizioni. Postgres 11 supporta:

  • l'aggiornamento delle righe può spostarle tra le partizioni
  • partizioni predefinite
  • creazione automatica dell'indice
  • I vincoli di chiave esterna sono supportati su tabelle partizionate
  • indici unici
  • aggregazione push down alle partizioni
  • partizione per hash
  • Le partizioni secondarie su server remoti (postgres_fdw) possono essere aggiornate
  • INSERT..ON CONFLICT è supportato su tabelle partizionate
  • Piani delle query più efficienti ed esecuzione delle query più rapida

Leggi ulteriori informazioni su questi miglioramenti qui.

Più parallelismo

Ci sono un sacco di miglioramenti su tutta la linea relativi all'aumento del parallelismo. Join, unioni, creazione di tabelle e viste con "CREATE..AS SELECT", creazione di indici btree e altri vantaggi da queste modifiche.

Ecco un articolo sui miglioramenti delle prestazioni della creazione di indici in Postgres 11.

Query conformi a JIT

Sebbene disabilitata per impostazione predefinita in 11, la compilazione JIT di query basata su LLVM è ora integrata in Postgres. Il server ora può scegliere di compilare determinate query (quelle con stime di esecuzione superiori a una soglia) utilizzando LLVM, ottenendo query più veloci. Questa compilazione è automatica e trasparente all'applicazione.

Ecco alcuni numeri.

Indici di copertura

Gli indici di copertura, disponibili in altri RDBMS ma non in PostgreSQL, sono stati aggiunti ora. Con questo, è possibile avere un indice come questo (nuova sintassi):

CREATE INDEX empid_idx ON employees(empid) INCLUDE (empname);

Tale indice include attributi extra (qui "empname") nell'indice stesso e consente di soddisfare query come:

SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;

utilizzando interamente le scansioni solo indice e non toccando affatto l'heap.

Leggi di più sulla copertura degli indici qui.

Procedure archiviate

Le stored procedure sono ancora un'altra istanza di PostgreSQL che gioca al passo con altri RDBMS. Sono ovviamente simili alle funzioni memorizzate che PostgreSQL ha supportato da molto tempo, ma l'unica cosa importante possibile solo usando le procedure è il controllo delle transazioni. Puoi eseguire il commit e il rollback delle transazioni dalle procedure interne.

Dai un'occhiata alla documentazione CREATE PROCEDURE.

Aggiunta di colonne alle tabelle

La modifica di una tabella per aggiungere una nuova colonna NOT NULL con un valore DEFAULT è stata un po' una seccatura in PostgreSQL, poiché ciò ha causato la riscrittura dell'intera tabella da parte del server. Con la v11 è ora possibile avere istruzioni DDL come questa:

ALTER TABLE users ADD COLUMN foo_factor integer NOT NULL DEFAULT 42;

eseguire a tempo costante. Le righe non vengono toccate quando questa viene eseguita, e vengono invece aggiornate “pigramente”.

Leggi di più su questa funzione qui.

Funzioni SHA

E infine, quelli di voi che hanno utilizzato pgcrypto solo per le funzioni SHA possono ora passare all'utilizzo di quelle integrate in 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)