PostgreSQL 11 : le compilateur de code LLVM de la partie

La puissante base de données open source PostgreSQL offre désormais plus de fonctionnalités pour le partage de données, des requêtes Just-In-Time (JIT) accélérées grâce au compilateur de code LLVM et l’usage des transactions dans les procédures stockées.

La version 11 de PostgreSQL s’enrichit de nombreuses options de partitionnement de tables, comme la prise en charge des fonctions « upsert » (UPDATE ou INSERT) sur les partitions. (crédit : D.R.)

La version 11 de la base de données SQL open source PostgreSQL, considérée depuis longtemps comme un joyau sous-estimé et un remplaçant potentiel de la base d’Oracle, est disponible. Cette nouvelle édition ne devrait pas trop perturber les utilisateurs actuels, et plusieurs nouvelles fonctionnalités et améliorations méritent qu’ils s’y intéressent, autant pour leurs futurs projets que pour apporter des changements incrémentiels à des projets existants.

PostgreSQL supporte depuis longtemps les tables de partitionnement pour optimiser la performance et faciliter la gestion. La version 11 de PostgreSQL s’enrichit de nombreuses options de partitionnement de tables, comme la prise en charge des fonctions « upsert » (UPDATE ou INSERT) sur les partitions pour simplifier le code d’application des bases de données, ou encore des requêtes plus rapides pour les tables partitionnées, et la possibilité de partitionner les tables en utilisant la fonction hash d’une clé donnée, ainsi que des plages pour une colonne ou une liste des clés possibles. Cette dernière fonctionnalité inclut le rééquilibrage automatique des fragments quand les rangées ont leur clé de hachage modifiée, de sorte qu’il n’est plus nécessaire d’inclure le rééquilibrage dans les tâches de maintenance régulières.

La compilation JIT utile pour les requêtes CPU

Les procédures stockées dans PostgreSQL 11 peuvent désormais gérer elles-mêmes leurs transactions, ce qui facilite l’écriture de fonctions de bases de données natives pour exécuter des opérations complexes côté serveur comme l’altération massive des données. Pour accélérer les requêtes, PostgreSQL 11 offre désormais la possibilité, désactivée par défaut, d’effectuer une compilation Just-In-Time (JIT) sur certaines expressions de requête, en utilisant le framework de compilation LLVM.

La compilation JIT est particulièrement utile pour les requêtes fortement liées au CPU, notamment quand les résultats des lignes sont transformés à la volée. Les tests montrent que la compilation JIT se traduit par une accélération générale d’environ 20%, et les performances sont jusqu’à cinq fois supérieures quand la compilation JIT  est couplée à d’autres fonctions d’optimisations. Les développeurs de PostgreSQL envisagent d’ailleurs d’accélérer plus tard d’autres opérations en s’appuyant sur la compilation JIT. Enfin, de nombreuses opérations de données dans PostgreSQL 11, y compris la création de tables et de vues, s’exécutent maintenant plus rapidement lorsqu’elles sont exécutées en parallèle, en particulier lorsqu’elles sont effectuées sur des données partitionnées.

chevron_left
chevron_right