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

Novità di PostgreSQL 12

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.