Nouveautés de PostgreSQL 12

Workshop 12

Dalibo & Contributors

Nouveautés de PostgreSQL 12

La v12

  • Développement depuis le 30 juin 2018
  • sortie le 3 octobre 2019
  • v12.1 sortie le 14/11/2019

Les nouveautés

  • Développement SQL
  • Partitionnement
  • Réplication
  • Monitoring
  • Administration
  • Performances : index
  • Incompatibilités
  • Fonctionnalités futures
  • Ateliers

Développement / SQL

  • Colonnes générées par une expression IMMUTABLE
  • Colonne OID supprimée
  • COMMIT ou ROLLBACK AND CHAIN
  • COPY FROM WHERE

Partitionnement

  • Clés étrangères
  • Fonctions d’information :
    • pg_partition_root renvoie la partition mère d’une partition,
    • pg_partition_ancestors renvoie la partition mère ainsi que la partition concernée
    • pg_partition_tree renvoie tout l’arbre de la partition sous forme de tuples
  • Commande \dP

Réplication

  • Nouveauté des postgresql.confet recovery.conf
  • 2 fichiers trigger
  • Paramètres modifiables à chaud
  • Fonction pg_promote()
  • Copie de slot de réplication

Monitoring

  • Échantillon des requêtes dans les logs
  • Vues de progression pour CREATE INDEX, CLUSTER, VACUUM
  • Listing : 
    • des fichiers dans les répertoires status des archives des wals
    • des fichiers temporaires
  • pg_stat_replication : timestamp du dernier message reçu du secondaire

Administration

  • Nouveautés sur le VACUUM
    • VACUUM (TRUNCATE on) : lock et libération de l’espace de fin de table
    • VACUUM (SKIP_LOCKED ON)
    • VACUUM (INDEX_CLEANUP OFF) : favoriser les VACUUM FREEZE
    • Nouvelles options de vacuumdb
  • Recyclage des WALs
    • wal_recycle
    • wal_init_zero
  • Outils : pg_upgrade, pg_ctl, pg_checksums
  • Paramètres de postgresql.conf

Environnement Client

  • Formatage CSV en sortie de psql
  • EXPLAIN (SETTINGS)

Outils

  • pg_upgrade --clone: clonage à l’aide de reflink
  • Rotation des logs avec pg_ctl logrotate
  • pg_verify_checksums devient pg_checksums
  • pg_checksums --enable | --disable

Paramètres de configuration

  • Nouveaux paramètres
  • disparition du fichier recovery.conf
  • valeur par défaut modifiée

Performances

  • REINDEX CONCURRENTLY
  • CREATE STATISTICS pour les distributions non-uniformes
  • paramètre plan_cache_mode
  • fonctions d’appui : pour améliorer les estimations de coût des fonctions
  • JIT par défaut
  • Optimisation CTE : MATERIALIZED / NOT MATERIALIZED
  • Meilleures performances sur le partitionnement

REINDEX CONCURRENTLY

  • REINDEX CONCURRENTLY

CREATE STATISTICS mcv

  • Nouveau type MCV pour la commande CREATE STATISTICS
  • MCV signifie Most Common Values
  • collecte les valeurs les plus communes pour un ensemble de colonnes

Méthode de mise en cache des plans d’exécution

  • Transactions préparées
  • plan_cache_mode auto
  • Trois modes:
    • auto
    • force_custom_plan
    • force_generic_plan

Fonctions d’appui (support functions)

  • Améliore la visibilité du planificateur sur les fonctions
  • possibilité d’associer à une fonction une fonction « de support »
  • produit dynamiquement des informations sur:
    • la sélectivité
    • le nombre de ligne produit
    • son coût d’exécution
  • La fonction doit être écrite en C

JIT par défaut

  • JIT (Just-In-time) est maintenant activé par défaut

Modification du comportement par défaut des requêtes CTE

  • Les CTE ne sont plus des barrières d’optimisation
  • Modification du comportement par défaut des CTE
    • MATERIALIZED
    • NOT MATERIALIZED (par défaut)
  • requêtes non récursives
  • requêtes référencées une seule fois
  • requêtes n’ayant aucun effet de bord

Performances du partitionnement

  • Performances accrues avec un grand nombre de partitions
  • Verrous lors des manipulations de partitions
  • support des clés étrangères vers une table partitionnée
  • Amélioration du chargement de données

Incompatibilités

  • Disparition du recovery.conf
  • max_wal_senders n’est plus inclus dans max_connections
  • Noms des clés étrangères
  • Tables WITH OIDS n’existent plus
  • Types de données supprimés
  • Fonctions to_timestamp et to_date
  • Outil pg_checksums

pg_verify_checksums renommée en pg_checkums

  • pg_verify_checksums devient pg_checkums

Fonctionnalités futures

  • Pluggable storage
    • HEAP storage
    • column storage
    • Zed Heap
    • blackhole

Pluggable storage

HEAP storage

  • HEAP storage
  • méthode de stockage par défaut
  • seule méthode supportée pour le moment

Zedstore: Column storage

  • méthode orientée colonne
  • données compressées
  • nom temporaire !

zHeap

  • UNDO plutôt que REDO
  • meilleur contrôle du bloat
  • réduction de l’amplification des écritures
  • réduction de la taille des entêtes
  • méthode basée sur les différences

Méthode d’accès Blackhole

  • sert de base pour créer une extension Access Method
  • toute donnée ajoutée est envoyée dans le néant