Versione PostgreSQL 12

Il team PostgreSQL ha annunciato il rilascio di PostgreSQL 12, l'ultima versione del sistema di gestione di database relazionali open source.
PostgreSQL 12 ha migliorato significativamente le prestazioni delle query, soprattutto quando si lavora con grandi volumi di dati, e ha anche ottimizzato l'uso dello spazio su disco in generale.

Le nuove funzionalità includono:

  • implementazione del linguaggio di query JSON Path (la parte più importante dello standard SQL/JSON);
  • ottimizzazione dell'esecuzione delle espressioni di tabella comuni (WITH);
  • supporto per le colonne generate

La comunità continua inoltre a lavorare sull'estensibilità e sull'affidabilità di PostgreSQL, sviluppando il supporto per l'internazionalizzazione, le capacità di autenticazione e fornendo modi più semplici per amministrare il sistema.

Questa versione include l'implementazione di un'interfaccia per motori di archiviazione collegabili, che ora consente agli sviluppatori di creare i propri metodi di archiviazione dei dati.

Miglioramenti delle prestazioni

PostgreSQL 12 include miglioramenti significativi in ​​termini di prestazioni e manutenzione per i sistemi di indicizzazione e partizionamento.

Gli indici B-tree, il tipo di indicizzazione standard in PostgreSQL, sono stati ottimizzati nella versione 12 per carichi di lavoro che comportano frequenti modifiche agli indici. L'utilizzo del benchmark TPC-C per PostgreSQL 12 ha dimostrato una riduzione media del 40% nell'utilizzo dello spazio e un aumento complessivo delle prestazioni delle query.

Le query sulle tabelle partizionate hanno ricevuto notevoli miglioramenti, soprattutto per le tabelle costituite da migliaia di partizioni che richiedono di lavorare solo con parti limitate degli array di dati. Le prestazioni di aggiunta di dati alle tabelle partizionate utilizzando INSERT e COPY sono state migliorate, così come la possibilità di allegare una nuova partizione senza bloccare le query.

PostgreSQL 12 ha apportato ulteriori miglioramenti all'indicizzazione che influiscono sulle prestazioni complessive, tra cui:

  • sovraccarico ridotto durante la generazione di WAL per i tipi di indice GiST, GIN e SP-GiST;
  • la possibilità di creare i cosiddetti indici di copertura (clausola INCLUDE) sugli indici GiST;
  • la capacità di eseguire query sul “vicino più vicino” (ricerca k-NN) utilizzando l'operatore distanza (<->) e utilizzando gli indici SP-GiST;
  • supporto per la raccolta di statistiche sui valori più comuni (MCV) utilizzando CREATE STATISTICS, che aiuta a ottenere piani di 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 migliora le prestazioni quando si lavora con espressioni in clausole WHERE, elenchi di destinazioni, aggregati e alcune operazioni interne. È disponibile se hai compilato PostgreSQL con LLVM o stai utilizzando un pacchetto PostgreSQL creato con LLVM abilitato.

Miglioramenti alle funzionalità del linguaggio SQL e alla compatibilità standard

PostgreSQL 12 ha introdotto la possibilità di eseguire query su documenti JSON utilizzando espressioni di percorso JSON definite nello standard SQL/JSON. Tali query possono sfruttare i meccanismi di indicizzazione esistenti per i documenti archiviati in formato JSONB per recuperare i dati in modo efficiente.

Le espressioni di tabella comuni, note anche come query WITH, ora possono essere eseguite automaticamente utilizzando la sostituzione in PostgreSQL 12, che a sua volta può aiutare a migliorare le prestazioni di molte query esistenti. Nella nuova versione, una parte di sostituzione di una query WITH può essere eseguita solo se non è ricorsiva, non ha effetti collaterali e viene fatta riferimento solo una volta in una parte successiva della query.

PostgreSQL 12 introduce il supporto per le "colonne generate". Descritto nello standard SQL, questo tipo di colonna calcola un valore in base al contenuto di altre colonne nella stessa tabella. In questa versione, PostgreSQL supporta le "colonne generate memorizzate", in cui il valore calcolato viene archiviato su disco.

Internazionalizzazione

PostgreSQL 12 espande il supporto per le 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 distinzione di accento.

autenticazione

PostgreSQL espande il suo supporto per i metodi di autenticazione forte con diversi miglioramenti che forniscono sicurezza e funzionalità aggiuntive. Questa versione introduce la crittografia lato client e lato server per l'autenticazione sulle interfacce GSSAPI, nonché la possibilità per PostgreSQL di rilevare i server LDAP quando PostgreSQL è compilato con OpenLDAP.

Inoltre, PostgreSQL 12 ora supporta un'opzione di autenticazione a più fattori. Il server PostgreSQL può ora richiedere al client di fornire un certificato SSL valido con il nome utente corrispondente utilizzando clientcert=verify-full e combinarlo con un requisito di metodo di autenticazione separato (ad esempio scram-sha-256).

amministrazione

PostgreSQL 12 ha introdotto la possibilità di eseguire ricostruzioni dell'indice non bloccanti utilizzando il comando REINDEX CONCURRENTLY. Ciò consente agli utenti di evitare tempi di inattività del DBMS durante lunghe ricostruzioni dell'indice.

Inoltre, in PostgreSQL 12, puoi abilitare o disabilitare i checksum delle pagine in un cluster di arresto utilizzando il comando pg_checksums. In precedenza, i checksum delle pagine, una funzionalità che aiuta a verificare l'integrità dei dati archiviati su disco, potevano essere abilitati solo quando il cluster PostgreSQL veniva inizializzato utilizzando initdb.

Fonte: linux.org.ru

Aggiungi un commento