Il 3 ottobre 2019 è stata rilasciata una nuova versione del database open source più avanzato al mondo. PostgreSQL 12 è ora disponibile con notevoli miglioramenti alle prestazioni delle query (in particolare su set di dati più grandi e utilizzo complessivo dello spazio) tra le altre importanti funzionalità.
In questo blog daremo un'occhiata a queste nuove funzionalità e ti mostreremo come ottenere e installare questa nuova versione di PostgreSQL 12. Esamineremo anche alcune considerazioni da tenere in considerazione durante l'aggiornamento.
Caratteristiche e miglioramenti di PostgreSQL 12
Iniziamo a citare alcune delle caratteristiche e dei miglioramenti più importanti di questa nuova versione di PostgreSQL.
Indicizzazione
- Esiste un'ottimizzazione per l'utilizzo dello spazio e le prestazioni di lettura/scrittura per gli indici B-Tree.
- Riduzione dell'overhead WAL per la creazione di indici GiST, GIN e SP-GiST.
- Puoi eseguire query K-neiest neighbor con l'operatore distanza (<->) utilizzando gli indici SP-GiST.
- Ricostruisci gli indici senza bloccare le scritture su un indice tramite il comando REINDEX CONCURRENTLY, consentendo agli utenti di evitare scenari di inattività per lunghe ricostruzioni degli indici.
Partizionamento
- Sono stati apportati miglioramenti alle query su tabelle partizionate, in particolare per le tabelle con migliaia di partizioni che necessitano solo di recuperare i dati da un sottoinsieme limitato.
- Miglioramenti delle prestazioni per l'aggiunta di dati a tabelle partizionate con INSERT e COPY.
- Sarai in grado di allegare una nuova partizione a una tabella senza bloccare le query.
SQL
- Ora puoi eseguire query su documenti JSON utilizzando le espressioni di percorso JSON definite nello standard SQL/JSON e possono utilizzare i meccanismi di indicizzazione esistenti per i documenti archiviati nel formato JSONB per recuperare i dati in modo efficiente.
- CON le query ora possono essere integrate automaticamente da PostgreSQL 12 (se non è ricorsivo, non ha effetti collaterali e viene referenziato solo una volta in una parte successiva di una query), che a sua volta può aiutare ad aumentare le prestazioni di molte query esistenti.
- Introduce le "colonne generate". Questo tipo di colonna calcola il proprio valore dal contenuto di altre colonne nella stessa tabella. È anche supportata la memorizzazione di questo valore calcolato su questo.
Internazionalizzazione
- PostgreSQL 12 estende il suo supporto alle regole di confronto ICU consentendo agli utenti di definire "collazioni non deterministiche" che possono, ad esempio, consentire confronti senza distinzione tra maiuscole e minuscole o senza accento.
Autenticazione
- Introduce la crittografia lato client e lato server per l'autenticazione su interfacce GSSAPI.
- Il servizio PostgreSQL è in grado di rilevare i server LDAP se è compilato con OpenLDAP.
- Autenticazione a più fattori, utilizzando l'opzione clientcert=verify-full e un metodo di autenticazione aggiuntivo configurato nel file pg_hba.conf.
Se vuoi sfruttare queste nuove funzionalità e miglioramenti, puoi andare alla pagina di download e ottenere l'ultima versione di PostgreSQL. Se hai bisogno di una configurazione HA, ecco un blog per mostrarti come installare e configurare PostgreSQL per HA.
Come installare PostgreSQL 12
Per questo esempio, useremo CentOS7 come sistema operativo. Quindi, dobbiamo andare al sito di download del sistema operativo basato su RedHat e installare la versione corrispondente.
$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Installerà il repository PostgreSQL con pacchetti stabili, test e sorgenti.
$ head /etc/yum.repos.d/pgdg-redhat-all.repo
# PGDG Red Hat Enterprise Linux / CentOS stable repositories:
[pgdg12]
name=PostgreSQL 12 for RHEL/CentOS $releasever - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
...
Quindi, installa i pacchetti PostgreSQL12 del client e del server. Installerà alcune dipendenze Python.
$ yum install postgresql12 postgresql12-server
Ora puoi inizializzare il tuo nuovo database PostgreSQL 12.
$ /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
E abilita/avvia il servizio PostgreSQL.
$ systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.
$ systemctl start postgresql-12
E questo è tutto. Hai la nuova versione di PostgreSQL attiva e funzionante.
$ psql
psql (12.0)
Type "help" for help.
postgres=# select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)
Ora che hai installato l'ultima versione di PostgreSQL, puoi migrare i tuoi dati in questo nuovo nodo del database.
Aggiornamento a PostgreSQL 12
Se desideri aggiornare la tua versione corrente di PostgreSQL a questa nuova, hai tre opzioni principali che eseguiranno questa attività.
- pg_dump :È uno strumento di backup logico che ti consente di scaricare i tuoi dati e ripristinarli nella nuova versione di PostgreSQL. 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 master, eseguire pg_dump, spostare il dump generato nel nuovo nodo del database e ripristinarlo. Durante questo periodo, non puoi scrivere nel tuo database PostgreSQL master per evitare l'incoerenza dei dati.
- Pg_upgrade :È uno strumento PostgreSQL per aggiornare la tua versione di PostgreSQL sul posto. Potrebbe essere pericoloso in un ambiente di produzione e in tal caso non consigliamo questo metodo. Utilizzando questo metodo avrai anche tempi di inattività, ma probabilmente saranno notevolmente inferiori rispetto all'utilizzo del precedente metodo pg_dump.
- Replica logica :Sin da PostgreSQL 10 sei stato in grado di utilizzare questo metodo di replica che ti consente di eseguire aggiornamenti di versione importanti 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.
Considerazioni prima dell'aggiornamento a PostgreSQL 12
In generale, per tutto il processo di aggiornamento e in tutta la tecnologia, ci sono diversi punti da tenere in considerazione. Vediamo alcuni dei principali.
- I tipi di dati abstime, reltime e tinterval sono stati rimossi.
- Le impostazioni recovery.conf si trovano nel file postgresql.conf e non viene più utilizzato. Se hai creato questo file, il server non si avvierà. I file recovery.signal e standby.signal vengono ora utilizzati per passare alla modalità non primaria. L'impostazione trigger_file è stata rinominata in promote_trigger_file e l'impostazione standby_mode è stata rimossa.
- Le specifiche multiple recovery_target in conflitto non sono consentite.
- La specifica di "-f" per inviare il contenuto del dump allo standard output è richiesta in pg_restore.
- La lunghezza massima della voce dell'indice è ridotta di otto byte negli indici B-Tree, per migliorare la gestione delle voci duplicate. L'operazione REINDEX su un indice pg_upgrade'd da una versione precedente potrebbe non riuscire.
- DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE genera un errore se non viene fornito alcun elenco di argomenti e sono presenti più oggetti corrispondenti.
Per informazioni più dettagliate sulle nuove funzionalità di PostgreSQL 12 e considerazioni prima della migrazione ad esso, puoi fare riferimento alla pagina Web delle note di rilascio ufficiali.