Excellente fin de semaine à tous ! Il reste de moins en moins de temps avant le lancement du cours. , c'est pourquoi aujourd'hui nous partageons la traduction d'un autre matériel utile sur le sujet.
En cours de dĂ©veloppement un travail impressionnant a Ă©tĂ© rĂ©alisĂ© pour amĂ©liorer le partitionnement des tables. Partitionnement des tables â c'est une fonctionnalitĂ© qui existe dans PostgreSQL depuis suffisamment longtemps, mais qui, pour ainsi dire, n'Ă©tait pas vraiment prĂ©sente avant la version 10, oĂč elle est devenue une fonctionnalitĂ© trĂšs utile. Auparavant, nous avions dĂ©clarĂ© que l'hĂ©ritage des tables Ă©tait notre mise en Ćuvre du partitionnement, et c'est vrai. Cependant, cette mĂ©thode vous obligeait Ă faire une grande partie du travail manuellement. Par exemple, si vous vouliez que les tuples soient insĂ©rĂ©s dans les sections pendant les INSERT, vous deviez configurer des dĂ©clencheurs pour le faire pour vous. Le partitionnement par hĂ©ritage Ă©tait trĂšs lent et difficile Ă dĂ©velopper pour ajouter des fonctionnalitĂ©s supplĂ©mentaires.
Dans PostgreSQL 10, nous avons vu naĂźtre le "partitionnement dĂ©claratif" â une fonctionnalitĂ© destinĂ©e Ă rĂ©soudre de nombreux problĂšmes qui Ă©taient insolubles avec l'ancienne mĂ©thode d'hĂ©ritage. Cela a conduit Ă l'Ă©mergence d'un outil beaucoup plus puissant permettant de diviser les donnĂ©es horizontalement !
Comparaison des fonctionnalités
Dans PostgreSQL 11, un ensemble impressionnant de nouvelles fonctionnalités est apparu, qui aide à améliorer les performances et à rendre les tables partitionnées plus transparentes pour les applications.



1. Utilisation d'exceptions de contrainte
2. Ajoute uniquement des nĆuds
3. Seulement pour des tables partitionnées, faisant référence à une non-partitionnée
4. Les index doivent contenir toutes les colonnes clés de la section
5. Les contraintes sur les sections des deux cÎtés doivent correspondre
Performance
Ici, nous avons Ă©galement de bonnes nouvelles ! Une nouvelle mĂ©thode a Ă©tĂ© ajoutĂ©e . Cet nouvel algorithme peut dĂ©terminer les sections appropriĂ©es en parcourant la condition de la requĂȘte OĂ. L'algorithme prĂ©cĂ©dent, quant Ă lui, vĂ©rifiait chaque section pour dĂ©terminer si elle pouvait rĂ©pondre Ă la condition OĂ. Cela entraĂźnait une augmentation supplĂ©mentaire du temps de planification Ă mesure que le nombre de sections augmentait.
Dans la version 9.6, avec le partitionnement basĂ© sur l'hĂ©ritage, le routage des tuples dans les sections s'effectuait gĂ©nĂ©ralement en Ă©crivant une fonction dĂ©clencheur contenant une sĂ©rie d'opĂ©rateurs IF pour insĂ©rer le tuple dans la bonne section. Ces fonctions pouvaient ĂȘtre trĂšs lentes Ă exĂ©cuter. Avec le partitionnement dĂ©claratif ajoutĂ© dans la version 10, cela fonctionne dĂ©sormais beaucoup plus rapidement.
En utilisant une table partitionnée avec 100 sections, nous pouvons évaluer les performances du chargement de 10 millions de lignes dans une table avec 1 colonne BIGINT et 5 colonnes INT.

Les performances de la requĂȘte sur cette table pour rechercher un enregistrement indexĂ© et effectuer des DML pour manipuler un enregistrement (en utilisant uniquement 1 processeur) :

Ici, nous voyons que les performances de chaque opĂ©ration ont considĂ©rablement augmentĂ© aprĂšs PG 9.6. Les requĂȘtes SELECT sont beaucoup meilleures, en particulier celles capables d'exclure de nombreuses sections lors de la planification des requĂȘtes. Cela signifie que le planificateur peut Ă©viter une grande partie du travail qu'il devait effectuer auparavant. Par exemple, il n'est plus nĂ©cessaire de construire des chemins pour les sections inutiles.
Conclusion
Le partitionnement de tables devient une fonctionnalitĂ© trĂšs puissante dans PostgreSQL. Il permet de fournir rapidement des donnĂ©es en ligne et de les transfĂ©rer hors ligne, sans attendre la fin d'opĂ©rations DML massives et lentes.Cela signifie Ă©galement que les donnĂ©es connexes peuvent ĂȘtre stockĂ©es ensemble, ce qui permet d'accĂ©der aux donnĂ©es nĂ©cessaires de maniĂšre beaucoup plus efficace. Les amĂ©liorations apportĂ©es dans cette version n'auraient pas Ă©tĂ© possibles sans les dĂ©veloppeurs, Ă©valuateurs et commetteurs qui ont travaillĂ© sans relĂąche sur toutes ces fonctionnalitĂ©s.
Merci Ă eux tous ! PostgreSQL 11 a l'air tout simplement fantastique !
Voici un article court, mais plutÎt intéressant. N'hésitez pas à partager vos commentaires, et n'oubliez pas de vous inscrire à , dans le cadre duquel le programme du cours sera détaillé.
Source : habr.com
