{"id":33872,"date":"2019-10-31T21:55:09","date_gmt":"2019-10-31T18:55:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\/"},"modified":"2019-10-31T21:55:09","modified_gmt":"2019-10-31T18:55:09","slug":"postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","title":{"rendered":"PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Excellente fin de semaine \u00e0 tous ! Il reste de moins en moins de temps avant le lancement du cours. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/CIBR\/\">\u00abBases de donn\u00e9es relationnelles\u00bb<\/a><\/noindex>, c'est pourquoi aujourd'hui nous partageons la traduction d'un autre mat\u00e9riel utile sur le sujet.<\/p>\n<p>En cours de d\u00e9veloppement <noindex><a rel=\"nofollow\" href=\"https:\/\/www.2ndquadrant.com\/postgresql\/2ndquadrants-passion-postgresql\/contributions-postgresql-11\/\">PostgreSQL 11<\/a><\/noindex> un travail impressionnant a \u00e9t\u00e9 r\u00e9alis\u00e9 pour am\u00e9liorer le partitionnement des tables. <b>Partitionnement des tables<\/b> \u2014 c'est une fonctionnalit\u00e9 qui existe dans PostgreSQL depuis suffisamment longtemps, mais qui, pour ainsi dire, n'\u00e9tait pas vraiment pr\u00e9sente avant la version 10, o\u00f9 elle est devenue une fonctionnalit\u00e9 tr\u00e8s utile. Auparavant, nous avions d\u00e9clar\u00e9 que l'h\u00e9ritage des tables \u00e9tait notre mise en \u0153uvre du partitionnement, et c'est vrai. Cependant, cette m\u00e9thode vous obligeait \u00e0 faire une grande partie du travail manuellement. Par exemple, si vous vouliez que les tuples soient ins\u00e9r\u00e9s dans les sections pendant les INSERT, vous deviez configurer des d\u00e9clencheurs pour le faire pour vous. Le partitionnement par h\u00e9ritage \u00e9tait tr\u00e8s lent et difficile \u00e0 d\u00e9velopper pour ajouter des fonctionnalit\u00e9s suppl\u00e9mentaires.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dans PostgreSQL 10, nous avons vu na\u00eetre le \"partitionnement d\u00e9claratif\" \u2014 une fonctionnalit\u00e9 destin\u00e9e \u00e0 r\u00e9soudre de nombreux probl\u00e8mes qui \u00e9taient insolubles avec l'ancienne m\u00e9thode d'h\u00e9ritage. Cela a conduit \u00e0 l'\u00e9mergence d'un outil beaucoup plus puissant permettant de diviser les donn\u00e9es horizontalement !<\/p>\n<p><b>Comparaison des fonctionnalit\u00e9s<\/b><\/p>\n<p>Dans PostgreSQL 11, un ensemble impressionnant de nouvelles fonctionnalit\u00e9s est apparu, qui aide \u00e0 am\u00e9liorer les performances et \u00e0 rendre les tables partitionn\u00e9es plus transparentes pour les applications.<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/13ef675b91bb0701719c816882bd3e8b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/d87349281f0dc0820a064d81f80407d1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/3bb3beeedf803f1fdbe58a858076478c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1. Utilisation d'exceptions de contrainte<br \/>\n2. Ajoute uniquement des n\u0153uds<br \/>\n3. Seulement pour des tables partitionn\u00e9es, faisant r\u00e9f\u00e9rence \u00e0 une non-partitionn\u00e9e<br \/>\n4. Les index doivent contenir toutes les colonnes cl\u00e9s de la section<br \/>\n5. Les contraintes sur les sections des deux c\u00f4t\u00e9s doivent correspondre<\/i><\/p>\n<p><b>Performance<\/b><\/p>\n<p>Ici, nous avons \u00e9galement de bonnes nouvelles ! Une nouvelle m\u00e9thode a \u00e9t\u00e9 ajout\u00e9e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.2ndquadrant.com\/blog\/http2ndquadrant-com\/partition-elimination-postgresql-11\/%22\">pour la suppression des sections<\/a><\/noindex>. Cet nouvel algorithme peut d\u00e9terminer les sections appropri\u00e9es en parcourant la condition de la requ\u00eate <code>O\u00d9<\/code>. L'algorithme pr\u00e9c\u00e9dent, quant \u00e0 lui, v\u00e9rifiait chaque section pour d\u00e9terminer si elle pouvait r\u00e9pondre \u00e0 la condition <code>O\u00d9<\/code>. Cela entra\u00eenait une augmentation suppl\u00e9mentaire du temps de planification \u00e0 mesure que le nombre de sections augmentait.<\/p>\n<p>Dans la version 9.6, avec le partitionnement bas\u00e9 sur l'h\u00e9ritage, le routage des tuples dans les sections s'effectuait g\u00e9n\u00e9ralement en \u00e9crivant une fonction d\u00e9clencheur contenant une s\u00e9rie d'op\u00e9rateurs IF pour ins\u00e9rer le tuple dans la bonne section. Ces fonctions pouvaient \u00eatre tr\u00e8s lentes \u00e0 ex\u00e9cuter. Avec le partitionnement d\u00e9claratif ajout\u00e9 dans la version 10, cela fonctionne d\u00e9sormais beaucoup plus rapidement.<\/p>\n<p>En utilisant une table partitionn\u00e9e avec 100 sections, nous pouvons \u00e9valuer les performances du chargement de 10 millions de lignes dans une table avec 1 colonne BIGINT et 5 colonnes INT.<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/02c33ba997f187890046215997a689fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLes performances de la requ\u00eate sur cette table pour rechercher un enregistrement index\u00e9 et effectuer des DML pour manipuler un enregistrement (en utilisant uniquement 1 processeur) :<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/8e69519dd97c6f2e60112908418e5c97.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIci, nous voyons que les performances de chaque op\u00e9ration ont consid\u00e9rablement augment\u00e9 apr\u00e8s PG 9.6. Les requ\u00eates <code>SELECT<\/code> sont beaucoup meilleures, en particulier celles capables d'exclure de nombreuses sections lors de la planification des requ\u00eates. Cela signifie que le planificateur peut \u00e9viter une grande partie du travail qu'il devait effectuer auparavant. Par exemple, il n'est plus n\u00e9cessaire de construire des chemins pour les sections inutiles.<\/p>\n<p><b>Conclusion<\/b><\/p>\n<p>Le partitionnement de tables devient une fonctionnalit\u00e9 tr\u00e8s puissante dans PostgreSQL. <b>Il permet de fournir rapidement des donn\u00e9es en ligne et de les transf\u00e9rer hors ligne, sans attendre la fin d'op\u00e9rations DML massives et lentes.<\/b>Cela signifie \u00e9galement que les donn\u00e9es connexes peuvent \u00eatre stock\u00e9es ensemble, ce qui permet d'acc\u00e9der aux donn\u00e9es n\u00e9cessaires de mani\u00e8re beaucoup plus efficace. Les am\u00e9liorations apport\u00e9es dans cette version n'auraient pas \u00e9t\u00e9 possibles sans les d\u00e9veloppeurs, \u00e9valuateurs et commetteurs qui ont travaill\u00e9 sans rel\u00e2che sur toutes ces fonctionnalit\u00e9s.<br \/>\nMerci \u00e0 eux tous ! <b>PostgreSQL 11 a l'air tout simplement fantastique !<\/b><\/p>\n<p>Voici un article court, mais plut\u00f4t int\u00e9ressant. N'h\u00e9sitez pas \u00e0 partager vos commentaires, et n'oubliez pas de vous inscrire \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/37jj\/\">journ\u00e9e portes ouvertes<\/a><\/noindex>, dans le cadre duquel le programme du cours sera d\u00e9taill\u00e9.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/452280\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b! \u0412\u0441\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0420\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0421\u0423\u0411\u0414\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0442\u0435\u043c\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 PostgreSQL 11 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446. \u0421\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 PostgreSQL \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u0435\u0435, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f, \u043f\u043e \u0441\u0443\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33872","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47PostgreSQL 11: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 Postgres 9.6 \u0434\u043e Postgres 11 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47PostgreSQL 11 : \u00c9volution du partitionnement de Postgres 9.6 \u00e0 Postgres 11 | ProHoster","description":"Bonne fin de semaine \u00e0 tous !","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47PostgreSQL 11: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 Postgres 9.6 \u0434\u043e Postgres 11 | ProHoster","og:description":"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:09+00:00","article:modified_time":"2019-10-31T18:55:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33872","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:02:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:32:26","updated":"2026-01-21 17:02:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=33872"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33872\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/25538"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=33872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=33872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=33872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}