À mon avis, contrairement aux versions précédentes, PostgreSQL 12 ne contient pas une ou deux fonctionnalités révolutionnaires (comme le partitionnement ou le parallélisme des requêtes). J'ai plaisanté un jour en disant que la principale caractéristique de PostgreSQL 12 était une plus grande stabilité. N'est-ce pas ce dont vous avez besoin lorsque vous gérez les données critiques de votre entreprise ?
Mais PostgreSQL 12 ne s'arrête pas là : avec de nouvelles fonctionnalités et améliorations, les applications seront plus performantes, et tout ce que vous avez à faire est de mettre à niveau !
(Eh bien, peut-être reconstruire les index, mais dans cette version, ce n'est pas aussi effrayant qu'avant.)
Ce sera formidable de mettre à niveau PostgreSQL et de bénéficier immédiatement d'améliorations significatives sans complications inutiles. Il y a quelques années, j'ai examiné une mise à niveau de PostgreSQL 9.4 vers PostgreSQL 10 et j'ai vu comment l'application s'est accélérée grâce au parallélisme amélioré des requêtes dans PostgreSQL 10. Et, plus important encore, presque rien ne m'était demandé (il suffit de définir un paramètre de configuration max_parallel_workers
).
D’accord, c’est pratique lorsque les applications fonctionnent mieux immédiatement après une mise à niveau. Et nous essayons très fort de plaire aux utilisateurs, car PostgreSQL en compte de plus en plus.
Alors, comment une simple mise à niveau vers PostgreSQL 12 peut-elle vous rendre heureux ? Je vais vous le dire maintenant.
Améliorations majeures de l'indexation
Sans indexation, une base de données n’ira pas loin. Sinon, comment pouvez-vous trouver rapidement des informations ? Le système d'indexation fondamental de PostgreSQL s'appelle
On utilise simplement l'opérateur CREATE INDEX ON some_table (some_column)
, et PostgreSQL fait beaucoup de travail pour maintenir l'index à jour pendant que nous insérons, mettons à jour et supprimons constamment des valeurs. Tout fonctionne tout seul, comme par magie.
Mais les index PostgreSQL ont un problème : ils
PostgreSQL 12 améliore considérablement les performances des index B-tree, et des expériences avec des benchmarks comme TPC-C ont montré qu'en moyenne 40 % d'espace en moins est désormais utilisé. Désormais, nous consacrons moins de temps non seulement à la maintenance des index B-tree (c'est-à-dire aux opérations d'écriture), mais également à la récupération des données, car les index sont beaucoup plus petits.
Applications qui mettent activement à jour leurs tables - généralement les applications OLTP (
Certaines stratégies de mise à niveau nécessitent de reconstruire les index B-tree pour profiter de ces avantages (par ex.
Il existe d'autres améliorations de l'infrastructure d'indexation dans PostgreSQL 12. Une autre chose où il y avait un peu de magie -
PostgreSQL 12 a réduit la surcharge des enregistrements WAL créés par les index GiST, GIN et SP-GiST lors de la construction de l'index. Cela offre plusieurs avantages tangibles : les enregistrements WAL occupent moins d'espace disque et les données sont relues plus rapidement, comme lors d'une récupération après sinistre ou d'une récupération à un moment précis. Si vous utilisez de tels index dans vos applications (par exemple, les applications géospatiales basées sur PostGIS utilisent beaucoup l'index GiST), il s'agit d'une autre fonctionnalité qui améliorera considérablement l'expérience sans aucun effort de votre part.
Partitionnement : plus grand, meilleur, plus rapide
PostgreSQL 10 introduit
Dans PostgreSQL 12, les performances du système de partitionnement se sont nettement améliorées, surtout s'il y a des milliers de partitions dans la table. Par exemple, si une requête n’affecte que quelques partitions d’une table qui en contient des milliers, elle s’exécutera beaucoup plus rapidement. Les performances ne sont pas seulement améliorées pour ces types de requêtes. Vous remarquerez également à quel point les opérations INSERT sont plus rapides sur les tables comportant plusieurs partitions.
Enregistrement de données à l'aide
Grâce à ces avantages, PostgreSQL vous permet de stocker des ensembles de données encore plus volumineux et de les rendre plus faciles à récupérer. Et aucun effort de votre part. Si l'application comporte de nombreuses partitions, telles que l'enregistrement de données de séries chronologiques, une simple mise à niveau améliorera considérablement ses performances.
Bien qu'il ne s'agisse pas exactement d'une amélioration « mettre à niveau et profiter », PostgreSQL 12 vous permet de créer des clés étrangères faisant référence à des tables partitionnées, ce qui rend le partitionnement un plaisir à travailler.
Les requêtes AVEC sont devenues bien meilleures
Quand
Je trouve souvent que les débutants en SQL adorent utiliser les CTE ; si vous les écrivez d’une certaine manière, vous avez vraiment l’impression d’écrire un programme impératif. Personnellement, j'aimais réécrire ces requêtes pour contourner sans CTE et augmentation de la productivité. Maintenant, tout est différent.
PostgreSQL 12 vous permet d'intégrer un type spécifique de CTE sans effets secondaires (SELECT
), qui n'est utilisé qu'une seule fois vers la fin de la requête. Si je gardais une trace des requêtes CTE que j'ai réécrites, la plupart d'entre elles entreraient dans cette catégorie. Cela aide les développeurs à écrire du code clair qui s’exécute désormais également rapidement.
De plus, PostgreSQL 12 optimise lui-même l'exécution de SQL, sans que vous ayez à faire quoi que ce soit. Et même si je n'aurai probablement pas besoin d'optimiser de telles requêtes maintenant, c'est formidable que PostgreSQL continue de travailler sur l'optimisation des requêtes.
Juste à temps (JIT) - désormais par défaut
Sur les systèmes PostgreSQL 12 avec prise en charge
Étant donné que JIT est activé par défaut dans PostgreSQL 12, les performances s'amélioreront d'elles-mêmes, mais je recommande de tester l'application dans PostgreSQL 11, qui a introduit JIT, pour mesurer les performances des requêtes et voir si vous devez régler quelque chose.
Qu’en est-il du reste des nouvelles fonctionnalités de PostgreSQL 12 ?
PostgreSQL 12 propose une tonne de nouvelles fonctionnalités intéressantes, de la possibilité d'examiner les données JSON à l'aide d'expressions de route SQL/JSON standard à l'authentification multifacteur avec un paramètre. clientcert=verify-full
, colonnes créées et bien plus encore. Assez pour un article séparé.
Comme PostgreSQL 10, PostgreSQL 12 améliorera les performances globales immédiatement après la mise à niveau. Vous pouvez bien sûr avoir votre propre chemin - tester l'application dans des conditions similaires sur le système de production avant d'activer les améliorations, comme je l'ai fait avec PostgreSQL 10. Même si PostgreSQL 12 est déjà plus stable que prévu, ne soyez pas paresseux dans les tests soigneusement les applications avant de les lancer en production.
Source: habr.com