Secondo StackOverflow, PostgreSQL è il database open source più popolare, con sempre più sviluppatori e amministratori che desiderano lavorarci. PostgreSQL 14, l'ultima versione rilasciata a settembre 2021, presenta oltre 200 miglioramenti e nuove funzionalità, che rientrano sostanzialmente in tre aree:sicurezza, prestazioni e monitoraggio.
A partire dalla versione 1.9.2, rilasciata all'inizio di quest'anno, ClusterControl ora supporta l'ultima versione di PostgreSQL 14.
In questo post, esamineremo le funzionalità più importanti, gli aggiornamenti principali e i miglioramenti disponibili in PostgreSQL 14.
Sicurezza
Il cambiamento di sicurezza più significativo di PostgreSQL 14 si sta spostando su SCRAM poiché l'autenticazione predefinita dopo l'autenticazione SCRAM-SHA-256 è stata introdotta per la prima volta in PostgreSQL 10. SCRAM fornisce una soluzione molto più semplice e potente per regolare la conformità per i dati sicurezza. La precedente autenticazione MD5 predefinita ha avuto alcuni punti deboli sfruttati in passato.
Oltre a una migliore autenticazione, PostgreSQL 14 semplifica il processo di assegnazione delle capacità di sola scrittura e di sola lettura agli utenti su tabelle, viste e schemi introducendo due ruoli predefiniti, pg_write_all_data e pg_read_all_data. Il primo ruolo rende conveniente creare privilegi in stile superutente. Nonostante sia conveniente per le attività e l'accesso, questo tipo di account deve essere utilizzato con parsimonia. Quest'ultimo ruolo lo rende utile nel concedere l'accesso in sola lettura a un utente a tutte le tabelle, gli schemi e le viste nel database. Questo ruolo avrà l'accesso in lettura per impostazione predefinita a tutte le tabelle appena create.
Prestazioni
Le aziende elaborano sempre più dati e la velocità, il volume e la varietà (le tre V dei Big Data) non mostrano segni di rallentamento. PostgreSQL 14 ha apportato alcune modifiche molto significative per poter aumentare e diminuire per supportare questi carichi di lavoro e migliorare le prestazioni. Questo può essere raggruppato al meglio nelle seguenti cinque aree:
Scalabilità e prestazioni
PostgreSQL 14 offre enormi risultati nelle prestazioni di eliminazioni e aggiornamenti su tabelle con un numero elevato di partizioni. Ciò consente alle eliminazioni e agli aggiornamenti di tabelle partizionate di utilizzare lo sfoltimento delle partizioni in fase di esecuzione. Ancora più importante, questa versione può essere ridimensionata a più partizioni rispetto a prima, consentendo a PostgreSQL di far fronte a database molto più grandi di quanto fosse possibile in precedenza.
In PostgreSQL versione 14, le partizioni ora possono anche essere staccate contemporaneamente, semplificando la gestione di grandi tabelle di dati di serie temporali. Ciò è possibile grazie alla nuova funzione date_bin(), che consente agli utenti di riassumere i dati delle serie temporali in intervalli di date in modo migliore e più semplice.
PostgreSQL 14 ha aggiunto il supporto per la compressione LZ4 per TOAST. LZ4 utilizza la più recente tecnologia di compressione e si concentra sul miglioramento della velocità di decompressione e compressione dei dati dei documenti. LZ4 migliorerà le applicazioni con documenti XML e JSON più grandi e questo algoritmo di compressione può essere configurato sia a livello di sistema che di colonna.
Database e carichi di lavoro distribuiti
PostgreSQL 14 offre anche miglioramenti nel ridimensionamento orizzontale di un database introducendo due importanti miglioramenti in postgres_fdw (involucro di dati esterni) che sono strumentali al miglioramento delle prestazioni per i database distribuiti. Queste modifiche supportano l'inserimento in blocco di dati e le scansioni di tabelle parallele su tabelle esterne (quando è impostato async_capable).
La memorizzazione nella cache delle connessioni migliora anche le prestazioni consentendo l'apertura delle connessioni tra le transazioni. Possiamo anche citare la modalità pipeline Libpd, che aumenta le prestazioni dei database distribuiti consentendo la trasmissione di flussi di modifiche senza attendere la conferma della rete su ciascun comando.
Gestibilità
PostgreSQL 14 affronta anche il problema del B-tree index bloat; gli indici che vengono aggiornati frequentemente si gonfiano nel tempo a causa di tuple morte che possono essere rimosse eseguendo un vuoto.
Per questo motivo, una divisione irreversibile della pagina può essere causata da un inserto o da un aggiornamento quando la pagina viene riempita tra un vuoto e l'altro. Questa versione ha migliorato il processo del vuoto rilevando e rimuovendo le tuple morte tra i vuoti (parametro INDEX_CLEANUP impostato su Auto).
Un altro miglioramento del sistema di aspirazione è rimuovere le pagine cancellate avidamente. Nelle versioni precedenti, la rimozione delle pagine eliminate richiedeva due cicli di vuoto, contrassegnando prima la pagina come eliminata e il secondo ciclo liberando effettivamente quello spazio.
Regolazione delle prestazioni di query e indici
La gestione dell'indice nell'ottimizzazione delle applicazioni è un altro importante miglioramento di PostgreSQL 14. In particolare, REINDEX CONCURRENTLY e CREATE INDEX CONCURRENTLY, consentono l'esecuzione simultanea di più comandi senza interferire tra loro. Più sugli indici, gli indici BRIN sono diventati più flessibili in quanto possono registrare numerosi valori min/max per intervallo, il che è prezioso per gruppi di valori in ogni intervallo di pagine. Inoltre, gli indici BRIN funzionano in modo efficace con dati non ben localizzati nell'heap utilizzando filtri bloom.
L'opzione FREEZE nel comando COPY è stata migliorata aggiornando i bit di visibilità della pagina sulle prestazioni di caricamento dei dati. Anche la COPIA in modalità binaria è ora più veloce.
PostgreSQL 14 ha perfezionato il parallelismo delle query aggiungendo il parallelismo delle query a REFRESH MATERIALIZED VIEW e RETURN QUERY. Questi miglioramenti sono stati implementati nei loop join nidificati e nelle scansioni sequenziali parallele.
PostgreSQL 14 ha aumentato il numero di posti in cui le statistiche estese possono essere utilizzate per le espressioni e la stima della clausola OR. A differenza di prima, dove le statistiche erano solo su colonne, ora è consentito su un gruppo di espressioni. La vista di sistema pg_stats_ext_exprs riporta tali statistiche.
Replica logica migliorata
La replica logica è stata migliorata per consentire lo streaming di lunghe transazioni in corso tramite l'API o agli abbonati. Nelle versioni precedenti, le transazioni più grandi di logical_decoding_work_mem venivano scritte su disco fino al completamento della transazione prima di replicare la transazione all'abbonato. Con i nuovi miglioramenti in atto, la replica logica gestisce grandi volumi di istruzioni DDL in modo più efficiente.
Dopo ogni comando, la replica logica scrive i messaggi di invalidamento della cache nel WAL per l'elaborazione tramite lo streaming delle transazioni in corso. Questo processo crea notevoli vantaggi in termini di prestazioni.
Monitoraggio
Una delle parole d'ordine più importanti del 2022 è il monitoraggio, poiché amministratori e sviluppatori desiderano maggiori informazioni sulle prestazioni nel tempo. PostgreSQL 14 ha introdotto nuove funzionalità per facilitare il monitoraggio. Il cambiamento più significativo di tutti è lo spostamento del sistema hash della query da pg_stat_statement al database principale. Il monitoraggio delle query è stato consentito su diversi sistemi PostgreSQL e funzioni di registrazione utilizzando un unico ID.
Questa versione ha introdotto anche i seguenti nuovi parametri di monitoraggio:
-
Idle_session_timeout
-
REINDEX sugli indici figlio di una tabella partizionata
-
Manutenzione_io_concurrency
-
Pg_stat_progress_copy
-
Pg_stat_wal
Aggiornamento a PostgreSQL 14
Se desideri aggiornare la tua versione corrente di PostgreSQL alla versione 14, hai tre opzioni principali che eseguiranno questa attività:
-
Pg_dumpall:è uno strumento di backup logico che ti consente di scaricare i tuoi dati e ripristinarli nel nuovo PostgreSQL versione. Qui avrai un periodo di inattività che varierà in base alla dimensione dei tuoi dati. È necessario arrestare il sistema o evitare nuovi dati nel nodo primario, eseguire pg_dumpall, spostare il dump generato nel nuovo nodo del database e ripristinarlo. Durante questo periodo, non puoi scrivere nel tuo database PostgreSQL principale per evitare l'incoerenza dei dati.
-
Pg_upgrade:è uno strumento PostgreSQL per aggiornare la tua versione di PostgreSQL. Potrebbe essere pericoloso in un ambiente di produzione e in tal caso non consigliamo questo metodo. Utilizzando questo metodo, avrai tempi di inattività, ma probabilmente saranno notevolmente inferiori rispetto all'utilizzo del precedente metodo pg_dump.
-
Replica logica:da PostgreSQL 10, puoi utilizzare questo metodo di replica che ti consente di eseguire aggiornamenti di versione principali con tempi di inattività pari a zero (o quasi zero). In questo modo, puoi aggiungere un nodo standby nell'ultima versione di PostgreSQL e, quando la replica è aggiornata, puoi eseguire un processo di failover per promuovere il nuovo nodo PostgreSQL.
Per informazioni più dettagliate sulle nuove funzionalità di PostgreSQL 14, puoi fare riferimento alla documentazione ufficiale.
Conclusione
PostgreSQL 14 ha davvero migliorato il gioco per gli utenti di questo popolare database open source. Ora sviluppatori e amministratori hanno capacità migliorate per aumentare le prestazioni elevate e la scalabilità, miglioramenti per i database distribuiti, una migliore osservabilità e altro ancora.
ClusterControl rende l'aggiornamento alle ultime versioni della tecnologia semplice e senza stress. Se non stai già utilizzando ClusterControl, puoi valutarlo gratuitamente per 30 giorni. Per maggiori dettagli sull'ultima versione di ClusterControl 1.9.2, consulta le note di rilascio complete.
Rimani aggiornato con tutte le ultime notizie e le migliori pratiche per i database open source più popolari seguendoci su Twitter e LinkedIn e iscrivendoti alla nostra newsletter.