Il gruppo di sviluppatori di PostgreSQL ha annunciato il rilascio di PostgreSQL 12, l'ultima versione del sistema di gestione di database relazionali open source.
In PostgreSQL 12, le prestazioni delle query sono state significativamente migliorate, in particolare per quanto riguarda l'elaborazione di grandi volumi di dati, e sono state ottimizzate anche l'uso dello spazio su disco nel complesso.
Tra le nuove funzionalità:
- implementazione del linguaggio di query JSON Path (una parte fondamentale dello standard SQL/JSON);
- ottimizzazione dell'esecuzione delle espressioni di tabella comuni (WITH);
- supporto per colonne generate;
Inoltre, la comunità continua a lavorare sull'estensibilità e l'affidabilità di PostgreSQL, sviluppando il supporto per l'internazionalizzazione, le possibilità di autenticazione e fornendo percorsi più semplici per l'amministrazione del sistema.
Questa versione include l'implementazione dell'interfaccia per motori di archiviazione plug-in, che consente ora agli sviluppatori di creare i propri metodi di archiviazione dei dati.
Miglioramenti delle prestazioni
PostgreSQL 12 include significativi miglioramenti nelle prestazioni e nelle procedure di manutenzione per i sistemi di indicizzazione e partizionamento.
Gli indici B-tree, il tipo standard di indicizzazione in PostgreSQL, sono stati ottimizzati nella versione 12 per carichi di lavoro che prevedono frequenti modifiche agli indici. L'uso del benchmark TPC-C per PostgreSQL 12 ha mostrato una riduzione dell'uso dello spazio in media del 40% e un incremento complessivo delle prestazioni delle query.
Le query sulle tabelle partizionate hanno ricevuto miglioramenti significativi, specialmente per tabelle composte da migliaia di partizioni, consentendo di lavorare solo con parti limitate di grandi quantità di dati. È stata migliorata la performance per l'inserimento di dati nelle tabelle partizionate attraverso INSERT e COPY, oltre alla possibilità di aggiungere una nuova partizione senza bloccare le query già in esecuzione.
In PostgreSQL 12 sono state apportate ulteriori migliorie all'indicizzazione che influiscono sulle prestazioni generali, tra cui:
- riduzione del sovraccarico nella generazione del WAL per i tipi di indici GiST, GIN e SP-GiST;
- possibilità di creare quelli che vengono chiamati indici coprenti (covering indexes, opzione INCLUDE) sugli indici GiST;
- la possibilità di eseguire query di "nearest neighbors" (ricerca k-NN) utilizzando l'operatore di distanza () e gli indici SP-GiST;
- il supporto per la raccolta di statistiche sui valori più comuni (most-common value, MCV) tramite CREATE STATISTICS, che aiuta a ottenere piani di esecuzione delle query migliori quando si utilizzano colonne i cui valori sono distribuiti in modo non uniforme.
La compilazione JIT utilizzando LLVM, introdotta in PostgreSQL 11, è ora abilitata per impostazione predefinita. La compilazione JIT aumenta le prestazioni durante l'elaborazione di espressioni nelle clausole WHERE, nelle liste di destinazione, nelle aggregazioni e in alcune operazioni interne. È disponibile se hai compilato PostgreSQL con LLVM o utilizzi un pacchetto PostgreSQL creato con LLVM abilitato.
Migliorie nelle capacità del linguaggio SQL e nella compatibilità con lo standard.
In PostgreSQL 12 è stata introdotta la possibilità di eseguire query su documenti JSON utilizzando espressioni di percorso JSON definite nello standard SQL/JSON. Queste query possono utilizzare i meccanismi di indicizzazione esistenti per documenti memorizzati in formato JSONB, per un'estrazione efficiente dei dati.
Le common table expressions, noti anche come query WITH, in PostgreSQL 12 possono ora essere eseguiti automaticamente con l'uso di sostituzioni, il che può contribuire a migliorare le prestazioni di molte query esistenti. Nella nuova versione, una parte della query WITH può essere eseguita con sostituzione solo se non è ricorsiva, non ha effetti collaterali e viene referenziata solo una volta nella parte successiva della query.
PostgreSQL 12 introduce il supporto per le 'colonne generate'. Descritto nello standard SQL, questo tipo di colonna calcola il valore sulla base del contenuto di altre colonne nella stessa tabella. In questa versione, PostgreSQL supporta le 'colonne generate memorizzate', in cui il valore calcolato è conservato su disco.
Internazionalizzazione
PostgreSQL 12 amplia il supporto per i confronti ICU, consentendo agli utenti di definire "confronti non deterministici", che possono, ad esempio, permettere confronti senza distinzione di maiuscole o accenti.
Autenticazione
PostgreSQL amplia il supporto per metodi di autenticazione sicuri con diverse migliorie che garantiscono ulteriore sicurezza e funzionalità. Questa versione introduce la crittografia lato client e lato server per l'autenticazione tramite interfacce GSSAPI, nonché la capacità di PostgreSQL di rilevare server LDAP, se PostgreSQL è stato compilato con OpenLDAP.
Inoltre, PostgreSQL 12 supporta ora una variante di autenticazione a più fattori. Ora il server PostgreSQL può richiedere al client di fornire un certificato valido SSL- con il nome utente corrispondente utilizzando clientcert=verify-full, e combinare questo con un requisito separato per il metodo di autenticazione (ad esempio, scram-sha-256).
Amministrazione
Con PostgreSQL 12 è possibile eseguire il reindicizzazione non bloccante con il comando REINDEX CONCURRENTLY. Questo consente agli utenti di evitare fermi del database durante la lunga operazione di reindicizzazione.
In PostgreSQL 12, è possibile attivare o disattivare le somme di controllo delle pagine in un cluster spento utilizzando il comando pg_checksums. In precedenza, le somme di controllo delle pagine, una funzione che aiuta a verificare l'integrità dei dati memorizzati su disco, potevano essere abilitate solo al momento dell'inizializzazione del cluster PostgreSQL tramite initdb.
Fonte: linux.org.ru
