pgphil nous présente les grandes lignes de la version 11 de PostgreSQL en termes de fonctionnalités. Présenté au Meetup PostgreSQL de Toulouse PostgreSQL User Group
3. 05/06/18 3
Partitionnement
● Diviser logiquement une table, généralement de grande taille, en
plusieurs parties
– Archivage/suppression des données
– Maintenance interne (vacuum)
– Performance
– …
4. 05/06/18 4
Historique
● Jusqu’en 9.6, partitionnement par héritage complexe à
mettre en place (triggers à écrire notamment)
● 10 : introduction du partitionnement déclaratif
● 11 : nombreuses améliorations du partitionnement déclaratif
5. 05/06/18 5
Partitionnement en 11
● Index, clés primaires, clés étrangères, triggers directement sur les tables
partitionnées
● Partition par défaut
● Mise à jour de la clé de partitionnement, déplacement de la ligne dans la
bonne partition
● Élimination de partitions au parse mais aussi à l’exécution (partition
pruning)
● Méthode supplémentaire de partitionnement : hash en plus de list et range
6. 05/06/18 6
JIT
● JIT : just-in-time
● Compilation à l’exécution s’appuyant sur la librairie LLVM
●
Le but : produire à la volée du code pouvant être exécuté nativement par le CPU
● Sont concernées :
– Expressions des clauses SELECT, WHERE, agrégats
– Transformations des informations en mémoire après leur lecture sur disque
● Gains attendus en décisionnel sous réserve que les I/O ne soient pas un goulet d’étranglement bien plus
important
●
Gains observés : 20 % dans des cas favorables
● Option activée par défaut : sans doute favorable en environnement DSS, à évaluer en environnement
OLTP
7. 05/06/18 7
Parallélisme
● Hash join
● CTAS (create table as select)
● Vues matérialisées
● Créations d’index
● SELECT w UNION
8. 05/06/18 8
En vrac - 1
● Procédures PL/… avec transactions embarquées
● Performance (vitesse d’indexation à l’insertion, ajout de colonnes
non nulles)
● Vérification des checksums par pg_basebackup
● Support complet de SQL:2011 pour les fonctions de fenêtrage
● Amélioration de l’authentification SCRAM introduite en 10
(channel binding => éviter les man-in-the middle attacks)
9. 05/06/18 9
En vrac - 2
● Index couvrants (clause INCLUDE)
● Taille des WAL lors de l’initdb
● Fonction de hachage sha-2
● Toujours plus d’opérations pouvant être poussées par
postgres_fdw (update et delete utilisant des jointures)
10. 05/06/18 10
...en 12 et +
● MERGE...qui fonctionnait en 11devel, en attendant « insert … on
conflict » c’est OK et performant !
● Pluggable storages : stockage orienté colonne (en mémoire/disque),
IOT+undo (=> in place updates, index secondaires)…
● ...Greenplum, Vertica, Amazon Redshift sont des forks de
PostgreSQL