Rilascio del DBMS PostgreSQL 14

Dopo un anno di sviluppo, è stato pubblicato un nuovo ramo stabile del DBMS PostgreSQL 14. Gli aggiornamenti per il nuovo ramo verranno rilasciati nell'arco di cinque anni fino a novembre 2026.

Principali innovazioni:

  • Aggiunto il supporto per l'accesso ai dati JSON utilizzando espressioni simili ad array: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE dettagli['attributes']['size'] = '"medio"';

    Una sintassi simile viene implementata per i dati chiave/valore forniti dal tipo hstore. Questa sintassi è stata inizialmente implementata utilizzando un framework universale, che in futuro potrebbe essere utilizzato per altri tipi. Esempio per il tipo hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM miatabella; UPDATE miatabella SET h['c'] = 'nuovo';

  • La famiglia di tipi per la definizione degli intervalli è stata ampliata con nuovi tipi "multiintervallo", che consentono di specificare elenchi ordinati di intervalli di valori non sovrapposti. Oltre a ciascun tipo di intervallo esistente, viene proposto il proprio tipo multirange, ad esempio il tipo “int4range” corrisponde a “int4multirange” e il tipo “daterange” corrisponde a “datemultirange”. L'uso di nuovi tipi semplifica la progettazione di query che manipolano sequenze complesse di intervalli. SELEZIONA '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Sono state apportate ottimizzazioni per migliorare le prestazioni dei sistemi ad alto carico che elaborano un numero elevato di connessioni. In alcuni test si osserva un duplice aumento delle prestazioni.
  • L'efficienza degli indici B-tree è stata migliorata ed è stato risolto il problema relativo alla crescita degli indici quando le tabelle vengono aggiornate frequentemente.
  • Aggiunto il supporto per la modalità lato client (implementata a livello libpq) di trasmissione delle richieste tramite pipeline, che consente di velocizzare significativamente gli scenari del database associati all'esecuzione di un gran numero di piccole operazioni di scrittura (INSERT/UPDATE/DELETE) inviando il richiesta successiva senza attendere l'esito di quella precedente. La modalità aiuta anche ad accelerare il lavoro su connessioni con lunghi ritardi nella consegna dei pacchetti.
  • Funzionalità migliorate per configurazioni distribuite che coinvolgono più server PostgreSQL. L'implementazione della replica logica ora ha la capacità di inviare le transazioni in corso in modalità streaming, il che può migliorare significativamente le prestazioni di replica di transazioni di grandi dimensioni. Inoltre è stata ottimizzata la decodifica logica dei dati ricevuti durante la replica logica.
  • Il meccanismo per la connessione di tabelle esterne Foreign Data Wrapper (postgres_fdw) ha aggiunto il supporto per l'elaborazione di query parallele, che attualmente è applicabile solo quando ci si connette ad altri server PostgreSQL. postgres_fdw aggiunge anche il supporto per l'aggiunta di dati a tabelle esterne in modalità batch e la possibilità di importare tabelle partizionate specificando la direttiva “IMPORT FOREIGN SCHEMA”.
  • Sono state apportate ottimizzazioni all'implementazione dell'operazione VACUUM (garbage collection e confezionamento dello storage su disco). È stata aggiunta una modalità di pulizia di emergenza che ignora le operazioni di pulizia non essenziali se vengono create condizioni di wraparound dell'ID transazione. Overhead ridotto durante l'elaborazione degli indici nel formato B-Tree. L'esecuzione dell'operazione “ANALYZE”, che raccoglie statistiche sul funzionamento del database, è stata notevolmente accelerata.
  • Aggiunta la possibilità di configurare il metodo di compressione utilizzato nel sistema TOAST, che è responsabile della memorizzazione di dati di grandi dimensioni, come blocchi di testo o informazioni geometriche. Oltre al metodo di compressione pglz, TOAST ora può utilizzare l'algoritmo LZ4.
  • Sono stati ampliati gli strumenti per il monitoraggio del funzionamento del DBMS. Aggiunte visualizzazioni per tenere traccia dell'avanzamento dei comandi COPY (pg_stat_progress_copy), statistiche sugli slot di replica (pg_stat_replication_slots) e attività relativa al registro delle transazioni WAL (pg_stat_wal). È stata aggiunta la funzione compute_query_id che consente a vari sottosistemi, come pg_stat_activity e EXPLAIN VERBOSE, di tenere traccia delle richieste assegnando un identificatore univoco per ciascuna richiesta.
  • Sono state aggiunte ottimizzazioni al pianificatore di query per migliorare l'elaborazione parallela delle query e migliorare le prestazioni dell'esecuzione simultanea di operazioni di scansione sequenziale di record, esecuzione parallela di query in PL/pgSQL utilizzando il comando "RETURN QUERY" ed esecuzione parallela di query in " AGGIORNA VISTA MATERIALIZZATA”. Per migliorare le prestazioni delle unioni nidificate cicliche (join), è stato implementato il supporto per la memorizzazione nella cache aggiuntiva.
  • Ora è possibile utilizzare le statistiche avanzate per ottimizzare le espressioni e l'ordinamento incrementale per ottimizzare le funzioni della finestra.
  • Le procedure memorizzate che consentono di gestire le transazioni in blocchi di codice ora supportano la definizione dei dati di restituzione utilizzando i parametri "OUT".
  • Aggiunta la funzione date_bin per arrotondare i valori di timestamp in base a un intervallo specificato. SELECT date_bin('15 minuti', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Aggiunte le espressioni SEARCH e CYCLE definite nello standard SQL per semplificare l'ordine e l'identificazione dei cicli nelle Common Table Expressions (CTE) ricorsive. WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) RICERCA PROFONDITÀ PRIMA PER id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Nell'utilità psql, il completamento automatico dei comandi con schede è stato migliorato, la possibilità di visualizzare gli argomenti delle funzioni è stata aggiunta al comando "\df" e le statistiche visualizzate sono state estese al comando "\dX".
  • È possibile assegnare privilegi di sola lettura o di sola scrittura agli utenti. I privilegi possono essere impostati su singole tabelle, viste e schemi utilizzando i ruoli predefiniti pg_read_all_data e pg_write_all_data. CONCEDI pg_read_all_data A utente1;
  • Le nuove installazioni utilizzano per impostazione predefinita l'autenticazione tramite password utilizzando SCRAM-SHA-256 anziché md5 (il parametro "password_encryption" durante la generazione di postgresql.conf è ora impostato su "scram-sha-256").

Fonte: opennet.ru

Aggiungi un commento