Lancement
du background writer et du checkpointer lors d’une récupération suite à
un crash
Les processus checkpointer et bgwriter sont lancés dès la phase de
crash recovery
simplifier le code en limitant la duplication
améliorer les performances dans certains cas
Plus de
checkpoint lors de la création d’une base
CREATE DATABASE .. STRATEGY WAL_LOG (valeur par défaut)
opération entièrement tracée dans les WAL
évite deux checkpoints potentiellement impactant pour les
performances
manipulation plus sécurisée à la fois sur l’instance primaire et les
instances qui rejouent les WAL par la suite, notamment les instances
secondaires
CREATE DATABASE .. STRATEGY FILE_COPY
méthode historique
génère moins de WAL
plus rapide quand la base modèle est très grosse
Statistiques
d’activité en mémoire partagée
Statistiques d’activité stockées en mémoire
Données perdues en cas de crash.
Disparition du processus stats collector
Disparition du paramètre stats_temp_directory
Nouveau paramètre stats_fetch_consistency
Préservation
de l’OID des relfilenodes, tablespaces, et bases de données après une
migration pg_upgrade
pg_upgrade préserve désormais :
les relfilenode
les oid de tablespaces
les oid de base de données
pour :
faciliter les analyses post upgrade
économiser de la bande passante quand on resynchronise une instance
post upgrade avec rsync
psql
Optimisation
des performances de la commande \copy
optimisation de la méta-commande psql \copy from
Nouvelles commandes
\getenv et \dconfig
Ajout de nouvelles méta-commandes psql
commande \dconfig pour afficher la configuration de
l’instance
commande \getenv pour récupérer la valeur d’une
variable d’environnement
Diverses
améliorations sur l’auto-complétion
Recherche insensible à la casse
Affichage des noms complets des commandes plutôt que leurs
abréviations
Amélioration de l’auto-complétion de différentes commandes
SQL :
EXPLAIN EXECUTE
LOCK TABLE ONLY | NOWAIT
ALTER TABLE ... ADD
CREATE, ALTER, DROP
Sauvegarde et restauration
Fin des backups exclusifs
le mode backup exclusive:
risqué en cas de crash de l’instance
déprécié depuis la version 9.6
supprimé depuis la version 15
renommage des fonctions de backup :
pg_start_backup() devient
pg_backup_start()
pg_stop_backup() devient
pg_backup_stop()
Archive_library &
module “basic archive”
Option de remplacement pour l’archive_command
Nouveau paramètre archive_library
Module basic_archive :
basic_archive.archive_directory
Permettre
le pre-fetch du contenu des fichiers WAL pendant le recovery
Accélération du recovery grâce au prefetch des blocs de
données accédés dans les enregistrements de WAL
recovery_prefetch : try, on, off
wal_decode_buffer_size distance à laquelle on peut lire
les WAL en avance de phase
nouvelle vue : pg_stat_recovery_prefetch
pg_basebackup --target
Nouveau paramètre -t/--target pour
pg_basebackup
client, server ou
blackhole
Sauvegarde sur le serveur seulement accessible aux membres du groupe
pg_write_server_files
Possibilité d’ajouter des cibles via des modules additionnels
module basebackup_to_shell fourni en exemple
Ajout de nouveaux
algorithmes de compression
Écritures de page complètes :
pglz (défaut utilisé pour on),
lz4, zstd
Sauvegardes avec pg_basebackup :
--compression [{client|server}-]method:detail
method: gzip, lz4, zstd
detail: [level=]entier, workers=entier
(zstd)
Récupération de WAL avec pg_receivewal :
--compression method:detail
method: gzip, lz4
detail: [level=]entier
pg_dump
Amélioration des performances d’export de bases avec de nombreux
objets
désormais une seule requête pour toutes les tables à exporter
élimination de sous-requêtes non nécessaires
utilisation de PREPARE/EXECUTE pour les
requêtes répétitives
Amélioration des performances d’export parallélisé de tables TOAST
données TOAST désormais comptabilisées dans la planification d’un
export parallélisé
Nouvelles vues et paramètres
Ajout
de la vue système pg_ident_file_mappings pour reporter les informations
du fichier pg_ident.conf
Nouvelle vue pg_ident_file_mappings
Résume le contenu actuel du fichier pg_ident.conf
Permet le diagnostique d’erreur et la validation de la
configuration
Ajout
de la vue système pg_stat_subscription_stats pour reporter l’activité
d’un souscripteur (cf. Réplication logique)
Donne des informations sur les erreurs qui se sont produites durant
la réplication logique
Ajout de la fonction
pg_stat_reset_subscription_stats()
Ajout
de nouvelles variables serveur shared_memory_size et
shared_memory_size_in_huge_pages
Ajout de deux nouvelles variables serveur :
shared_memory_size : détermine la taille de la mémoire
partagée
shared_memory_size_in_huge_pages : détermine le nombre
de Huge Pages nécessaires pour stocker la mémoire partagée
Englobe les éléments chargés avec
shared_preload_libraries
Uniquement accessible en lecture seule
Partitionnement
Amélioration
du comportement des clés étrangère lors de mises à jour qui déplacent
des lignes entres les partitions
Correction du comportement de PostgreSQL lorsqu’un
UPDATE sur une table partitionnée référencée par une
contrainte de clé étrangère provoque la migration d’une ligne vers une
autre partition.
Traces
Activation
de la journalisation des CHECKPOINT et opérations de VACUUM lentes
Changement des valeurs par défaut des paramètres de journalisation :
log_checkpoints par défaut à on
log_autovacuum_min_duration par défaut à 10
minutes.
Format de sortie JSON
pour les traces
Nouveau format de sortie pour les fichiers trace :
jsonlog
Informations
supplémentaires dans VACUUM VERBOSE
Optimisations du code de la commande VACUUM
Amélioration de la verbosité de la commande
VACUUM VERBOSE
Divers
Possibilité
de donner/restreindre les droits aux commandes SET / ALTER SYSTEM pour
les utilisateurs non privilégiés
Apparition de deux nouveaux privilèges :
SET : permet de modifier les paramètres avec le
contexte superuser
ALTER SYSTEM : permet à un utilisateur non
superuser de modifier des paramètres avec
ALTER SYSTEM SET ...
Donne des droits par rôle et par paramètre
Nouvelle table système pg_parameter_acl qui stocke la
configuration
Révocation
du droit par défaut CREATE sur le schéma public pour le groupe
PUBLIC
USAGE par défaut pour le rôle PUBLIC
CREATE et USAGE par défaut pour le rôle
pg_database_owner
adaptation de pg_dump pour extraire ces
changements
Attention lors des montées de version !
Ajout
de la possibilité de créer des séquences UNLOGGED
Évite de répliquer une séquence d’une table
unlogged
Pas dans un but de performance
Une séquence d’identité hérite automatiquement de la persistance de
la table de référence
Nouvelle
variable d’environnement PSQL_WATCH_PAGER
Permet de définir un pager pour la commande
\watch
Privilégier le pager pspg
Fonctionne uniquement sous Unix
Collation icu déclarées
globalement
Définition des collations ICU pour toute l’instance ou une base de
données