To sidebar

samedi 1 septembre 2018

PostgreSQL 11 : ajout de colonnes avec valeurs par défaut & bombe à retardement

Dans les améliorations de performances de la v11, l’une d’elles peut faire gagner beaucoup de temps lors des mises à jour applicatives, voire peut en rendre certaines simplement possibles :

Many other useful performance improvements, including making ALTER TABLE .. ADD COLUMN with a non-null column default faster

Les détails sont chez Brandur. En résumé, lors de l’ajout d’une colonne avec une valeur par défaut, PostgreSQL pré-v11 devait réécrire la table pour la rajouter physiquement. Ce qui prend son temps si ladite table fait 1 To. Et l’application utilisatrice est bloquée, ce qui peut être intolérable. Les contournements, comme l’ajout d’une colonne nullable puis la mise à jour progressive par batchs, introduisent un état transitoire un peu bancal.

Vient la v11, qui se contente de rajouter l’information que la colonne a été ajoutée, et que si elle ne se trouve pas dans la ligne, il faut prendre la valeur par défaut.

Lire la suite...

© SQL & éléphant, after the WP Dusk To Dawn theme Propulsé par Dotclear