Nouveautés de PostgreSQL® 12

Workshop 12

Dalibo & Contributors

Nouveautés de PostgreSQL 12

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
  • Colonne OIDS
  • COMMIT / ROLLBACK AND CHAIN
  • COPY FROM WHERE

Ajout du support des colonnes générées

  • Colonnes générées par une expression
    • évaluation à l’écriture (stored)
    • plus efficace qu’un trigger
    • colonne en lecture seule (sauf default)
    • évaluation à la lecture prochainement (virtual)
    • colonnes indexables

Restriction

  • expression immutable

Visibilité de la colonne OID

  • La fin des OIDS
    • anomalies de restauration possible

COMMIT AND CHAIN / ROLLBACK AND CHAIN

  • COMMIT AND CHAIN
  • ROLLBACK AND CHAIN

COPY FROM WHERE…

  • COPY FROM... WHERE...

Partitionnement

  • Clés étrangères
  • Fonctions d’information :
    • pg_partition_root()
    • pg_partition_ancestors()
    • pg_partition_tree()
  • Commande \dP

Clés étrangères dans les tables partitionnées

  • Support des clés étrangères entre tables partitionnées

Fonctions d’information sur le partitionnement

  • pg_partition_root(regclass)
  • pg_partition_ancestors(regclass)
  • pg_partition_tree(regclass)

Commande psql pour les tables partitionnées

  • Commande \dP[tin+] [PATTERN]

Réplication

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

Nouveauté de postgresql.conf et recovery.conf

  • recovery.conf disparaît
  • tous les paramètres dans postgresql.conf

2 fichiers trigger

  • standby.signal
  • recovery.signal

Paramètres modifiables à chaud

  • archive_cleanup_command
  • recovery_end_command
  • recovery_min_apply_delay
  • promote_trigger_file

Fonction pg_promote()

  • pg_promote depuis psql

Copie de slot de réplication

  • pg_copy_physical_replication_slot('slot1','slot2')

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

Échantillon des requêtes dans les logs

  • log_transaction_sample_rate

Information de progression

  • pg_stat_progress_cluster
  • pg_stat_progress_create_index
  • pg_stat_progress_vacuum

Progression de l’opération CLUSTER

  • pg_stat_progress_cluster

Progression de la création d’index

  • pg_stat_progress_create_index

Progression de l’opération VACUUM

  • pg_stat_progress_vacuum

Archive status

  • pg_ls_archive_statusdir()

Fichiers temporaires

  • pg_ls_tmpdir()

Ajout dans la vue pg_stat_replication

  • timestamp du dernier message reçu du standby

Administration

  • Nouveautés sur le VACUUM
  • Recyclage des WALs
  • Environnement client : PG_COLORS, EXPLAIN SETTINGS,
  • Outils : pg_upgrade, pg_ctl, pg_checksums
  • Paramètres de postgresql.conf

Nouveautés du VACUUM

  • VACUUM TRUNCATE
  • Nouvelles options de vacuumdb
  • SKIP_LOCKED
  • INDEX_CLEANUP

Nouvelles Options de vaccumdb

  • --min-xid-age
  • --min-mxid-age
  • --disable-page-skipping
  • --skip-locked

VACUUM SKIP_LOCK

  • Plus d’attente de verrou

VACUUM_INDEX_CLEANUP

  • VACUUM : pas les index

Nouvelles options pour les journaux de transactions

  • wal_recycle
  • wal_init_zero

Environnement Client

  • Variable PG_COLOR et PG_COLORS
  • Formatage CSV en sortie du psql
  • EXPLAIN (SETTINGS)

Outils

  • pg_upgrade --clone et pg_upgrade --socketdir
  • Rotation des logs avec pg_ctl logrotate
  • pg_checksums anciennement pg_verify_checksums

Renommage de pg_verify_checksums en pg_checksums

  • pg_verify_checksum renomée en pg_checksums
  • Activation, désactivation des checksums

Paramètres postgresql.conf

  • Nouveaux paramètres
  • Paramètres modifiés
  • Paramètres dont la valeurs par défaut a été modifiée

Performances

  • REINDEX CONCURRENTLY
  • CREATE STATISTICS pour les distributions non-uniformes
  • 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 option mcv

  • CREATE STATISTICS avec most common values

Mise en cache des plans d’exécution

  • plan_cache_mode

Fonctions d’appui (support functions)

  • Améliorer l’estimation du coût d’une fonction

JIT par défaut

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

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

  • CTE MATERIALIZED / NOT MATERIALIZED

Performances du partitionnement

  • Grand nombre de partitions : mieux supporté
  • Verrous lors des manipulations de partitions

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’existe plus
  • Types de données supprimés
  • Fonctions to_timestamp et to_date
  • pg_checksums

Disparition du fichier recovery.conf.

max_wal_senders n’est plus inclus dans max_connections

Noms des clés étrangères autogénérées

WITH OIDS clause deleted

Type de données supprimés

Fonctions to_timestamp et to_date

pg_verify_checksums renomée en pg_checkums

Fonctionnalités futures

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

Pluggable storage

HEAP storage

  • HEAP storage : méthode par défaut

Column storage

  • méthode orientée colonne

zHeap

  • 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

Ateliers

TP sur les Colonnes générées

TP sur le partitionnement

  • Clés étrangères
  • Fonctions
    • pg_partition_root()
    • pg_partition_ancestors()
    • pg_partition_tree()
  • Tablespace des tables filles dans l’ordre CREATE TABLE
  • Commande \dP

Clés étrangères dans les tables partitionnées

  • Support des clés étrangères

Fonctions d’information sur le partitionnement

  • pg_partition_root(regclass)
  • pg_partition_ancestors(regclass)
  • pg_partition_tree(regclass)

Tablespace des partitions dans l’ordre CREATE TABLE

  • Préciser le tablespace des tables filles dans l’ordre CREATE TABLE

\dP : Affichage des tables partitionnées seules

TP Monitoring

  • échantillon des requêtes dans les logs
  • Vues de progression pour CREATE INDEX, CLUSTER, VACUUM
  • pg_ls_archive_statusdir() et pg_ls_tmpdir()
  • pg_stat_replication : timestamp du dernier message reçu du standby

Échantillon des requêtes dans les logs

  • log_statement_sample_rate
  • log_transaction_sample_rate

Vues de progression pour CREATE INDEX, CLUSTER, VACUUM

  • pg_stat_progress_create_index
  • pg_stat_progress_vacuum

Archive status et fichiers temporaires

  • pg_ls_archive_statusdir()
  • pg_ls_tmpdir()

timestamp du dernier message reçu du standby

  • pg_stat_replication

TP Index et performances

  • Les fonctions d’appui
  • reindex concurrently

TP sur les fonctions d’appui

TP Reindex concurrently