{"id":8084,"date":"2019-11-14T13:27:22","date_gmt":"2019-11-14T12:27:22","guid":{"rendered":"https:\/\/blog.capdata.fr\/?p=8084"},"modified":"2019-11-22T17:27:31","modified_gmt":"2019-11-22T16:27:31","slug":"postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/","title":{"rendered":"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2)"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8084&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8084&#038;title=PostgreSQL%20%3A%20%C3%A9volution%20du%20partitionnement%20de%209.6%20%C3%A0%2012%20%281%2F2%29\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=PostgreSQL%20%3A%20%C3%A9volution%20du%20partitionnement%20de%209.6%20%C3%A0%2012%20%281%2F2%29&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8084\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>Le PostgreSQL Global Development Group (PGDG) vient d\u2019annoncer la sortie de PostgreSQL 12 qui apporte de grosse am\u00e9lioration sur le partitionnement. C\u2019est l\u2019occasion pour faire une pr\u00e9sentation de l\u2019\u00e9volution du partitionnement dans PostgreSQL de la version 9.6 \u00e0 la version 12.  <\/p>\n<p>Dans cette premi\u00e8re partie, je parlerais du principe de partitionnement, ainsi que de la m\u00e9thode par h\u00e9ritage. La <a href='https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-2-2\/' target='_blank' rel=\"noopener noreferrer\">seconde partie<\/a> traitera du partitionnement d\u00e9claratif et des am\u00e9lioration li\u00e9es. <\/p>\n<h2>Pr\u00e9sentation du partitionnement :<\/h2>\n<p>Le partitionnement est le fait de diviser d&#8217;une table volumineuse en plusieurs plus petites, dans le but d\u2019am\u00e9liorer les performances. <\/p>\n<p>Le partitionnement est une r\u00e9ponse \u00e0 un probl\u00e8me de performance : <\/p>\n<ul>\n<li>Soit li\u00e9e en termes de Lecture \/ Ecriture<\/li>\n<li>Soit en termes de maintenance (reindex, vacuum, sauvegarde, \u2026)<\/li>\n<li>Soit les deux<\/li>\n<\/ul>\n<p>Il permet aussi de g\u00e9rer simplement un large historique de donn\u00e9es :  <\/p>\n<ul>\n<li>Supprimer des donn\u00e9es obsol\u00e8tes avec drop table apr\u00e8s un detach plut\u00f4t que des millions de lignes \u00e0 supprimer<\/li>\n<li>Permet d&#8217;ins\u00e9rer en masse des donn\u00e9es, avant un attach \u00e0 la table parent<\/li>\n<\/ul>\n<p>Cependant, il existe des contre-indications au partitionnement.<br \/>\nIl ne faut pas partitionner lorsque le probl\u00e8me de performance peut \u00eatre r\u00e9solu avec une autre solution : <\/p>\n<ul>\n<li>Des index partiels utilisant les filtres des requ\u00eates<\/li>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">CREATE INDEX ON users(login)\r\n WHERE date_part('year', create_date) = 2016;<\/pre>\n<li>Des index couvrants pour favoriser le parcours d&#8217;index seul<\/li>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">CREATE INDEX ON users(login, create_date)\r\n WHERE date_part('year', create_date) = 2016 ;<\/pre>\n<li>Des index BRIN ou des index BLOOM<\/li>\n<\/ul>\n<p>Les principaux b\u00e9n\u00e9fices du partitionnement sont les suivants :<\/p>\n<ul>\n<li>R\u00e9duction de la taille des index\n<ul>\n<li>Un index par partition, les index tiennent en m\u00e9moire<\/li>\n<\/ul>\n<\/li>\n<li>R\u00e9duction de la taille des tables\n<ul>\n<li>Segmentation sur des crit\u00e8res utiles aux requ\u00eates<\/li>\n<li>Acc\u00e8s s\u00e9quentiels privil\u00e9gi\u00e9s sur des volumes bien plus faibles<\/li>\n<li>Les partitions tiennent en m\u00e9moire<\/li>\n<\/ul>\n<\/li>\n<li>Chargement de donn\u00e9es plus rapide\n<ul>\n<li>Mise \u00e0 jour d&#8217;index peu volumineux<\/li>\n<li>Dispersion des partitions sur des disques ou serveurs diff\u00e9rents<\/li>\n<\/ul>\n<\/li>\n<li>Purge des donn\u00e9es par DROP TABLE plut\u00f4t que des DELETE lents<\/li>\n<li>Taches de maintenance plus rapides\n<ul>\n<li>Reindex : les index sont locaux \u00e0 chaque partition<\/li>\n<li>Sauvegarde : des donn\u00e9es statiques peuvent \u00eatre omises lors de la sauvegarde apr\u00e8s archivage<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Pour ce dernier point, il y a plusieurs impactes en fonctions du type de sauvegarde : <\/p>\n<ul>\n<li>Les donn\u00e9es obsol\u00e8tes peuvent \u00eatre supprim\u00e9es et donc moins de volum\u00e9trie \u00e0 sauvegarder<\/li>\n<li>Les sauvegardes physiques de type diff\u00e9rentielle ou incr\u00e9mentales devraient toucher moins de segments<\/li>\n<li>Les exports peuvent omettre des partitions de donn\u00e9es statiques qui ont d\u00e9j\u00e0 \u00e9t\u00e9 sauvegard\u00e9es, par exemple en cas d\u2019archivage<\/li>\n<li>Les partitions \u00e9tant consid\u00e9r\u00e9es comme des tables, l\u2019export utilisera un process par partition au lieu d\u2019un process pour la table si elle n\u2019est pas partitionn\u00e9e<\/li>\n<\/ul>\n<p>Les principaux objectifs du partitionnement sont : <\/p>\n<ul>\n<li>Archivage de donn\u00e9es<\/li>\n<li>Purge de donn\u00e9es<\/li>\n<li>Performances<\/li>\n<li>Facilit\u00e9 d&#8217;administration (maintenance des partitions plus rapide)<\/li>\n<li>Acc\u00e9l\u00e9ration des backups<\/li>\n<li>Stockage sur diff\u00e9rents types de disques<\/li>\n<\/ul>\n<h2>Partitionnement par h\u00e9ritage :<\/h2>\n<p>Avant de parler de partitionnement par h\u00e9ritage, il faut d\u2019abord d\u00e9finir ce qu\u2019est l\u2019h\u00e9ritage en base de donn\u00e9es.<br \/>\nLe principe est le m\u00eame principe qu&#8217;en d\u00e9veloppement. Une table h\u00e9rite des caract\u00e9ristiques de la table source, mais pas de ses donn\u00e9es. Elle peut aussi avoir plus de colonne que la table d\u2019origine. L\u2019h\u00e9ritage multiple est possible.<br \/>\nUn SELECT sur la table source ram\u00e8nera aussi les donn\u00e9es contenues dans la ou les tables h\u00e9rit\u00e9e(s). <\/p>\n<p>Le partitionnement par h\u00e9ritage est un d\u00e9tournement de ce fonctionnement. Une table parente est h\u00e9rit\u00e9e par plusieurs tables (partitions).<br \/>\nLes actions (INSERT, UPDATE, DELETE) sur la table parente sont intercept\u00e9es par des triggers qui d\u00e9clenchent des fonctions qui r\u00e9alisent les actions sur la bonne partition.<br \/>\nIl faut aussi mettre des contraintes CHECK sur les partitions pour garantir que les donn\u00e9es ins\u00e9r\u00e9es sont dans la bonne partition.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2019\/10\/heritage-300x266.png\" alt=\"\" width=\"300\" height=\"266\" class=\"alignnone size-medium wp-image-8087\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2019\/10\/heritage-300x266.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2019\/10\/heritage.png 368w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><br \/>\nCes fonctions peuvent int\u00e9grer la cr\u00e9ation de nouvelles partitions ainsi que la cr\u00e9ation des index associ\u00e9s.<br \/>\nAttention : plus ces fonctions sont complexes, plus les performances seront r\u00e9duites. <\/p>\n<p>Les avantages de cette m\u00e9thode sont les suivantes : <\/p>\n<ul>\n<li>La table parente peut contenir des donn\u00e9es <\/li>\n<li>Partitions par d\u00e9faut support\u00e9es (via le trigger) <\/li>\n<li>Gestion des foreign tables via Foreign Data Wrapper <\/li>\n<li>\u00c9criture dans les foreign tables (contrairement au partitionnement natif en 10) <\/li>\n<li>Sous partitions possibles <\/li>\n<li>Modification sur la cl\u00e9 de partitionnement par triggers (UPDATE) <\/li>\n<\/ul>\n<p>Elle comporte aussi des inconv\u00e9nients : <\/p>\n<ul>\n<li>Lenteurs en raison des triggers<\/li>\n<li>Toute &#8220;l&#8217;intelligence&#8221; se trouve dans les triggers<\/li>\n<li>Administration compliqu\u00e9e m\u00eame si des extensions la simplifie comme pg_partman<\/li>\n<li>Impossible d&#8217;ajouter\/supprimer une partition sans modifier le trigger, sauf si le trigger d&#8217;insertion g\u00e8re la cr\u00e9ation des partitions\/index<\/li>\n<li>Les index doivent \u00eatre cr\u00e9\u00e9s manuellement sur chaque partition ou via le trigger d&#8217;insertion (qui ferait cr\u00e9ation de partition + cr\u00e9ation d&#8217;index sur la partition)<\/li>\n<li>Si VACUUM ou ANALYZE sont lanc\u00e9s manuellement, il est obligatoire de les utiliser sur chaque table fille<\/li>\n<\/ul>\n<h2>Conclusion partie 1\/2 :<\/h2>\n<p>Dans cette premi\u00e8re partie, nous avons vu les principes du partitionnement ainsi que le partitionnement par h\u00e9ritage. Dans la <a href='https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-2-2\/' target='_blank' rel=\"noopener noreferrer\">seconde partie<\/a>, nous regarderons le partitionnement d\u00e9claratif et toutes les \u00e9volutions li\u00e9es (\u00e9volution des performances, \u2026). <\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8084&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8084&#038;title=PostgreSQL%20%3A%20%C3%A9volution%20du%20partitionnement%20de%209.6%20%C3%A0%2012%20%281%2F2%29\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=PostgreSQL%20%3A%20%C3%A9volution%20du%20partitionnement%20de%209.6%20%C3%A0%2012%20%281%2F2%29&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8084\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Le PostgreSQL Global Development Group (PGDG) vient d\u2019annoncer la sortie de PostgreSQL 12 qui apporte de grosse am\u00e9lioration sur le partitionnement. C\u2019est l\u2019occasion pour faire une pr\u00e9sentation de l\u2019\u00e9volution du partitionnement dans PostgreSQL de la version 9.6 \u00e0 la version&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":8137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[266],"tags":[342,344,348,343,341,346,232,345,340,339,338,347,349],"class_list":["post-8084","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postgresql","tag-declaratif","tag-declarative","tag-elimination","tag-heritage","tag-natif","tag-parallel","tag-parallelisme","tag-partition","tag-partitionnement","tag-pg","tag-postgres","tag-pruning","tag-vacuum"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2) - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2) - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Le PostgreSQL Global Development Group (PGDG) vient d\u2019annoncer la sortie de PostgreSQL 12 qui apporte de grosse am\u00e9lioration sur le partitionnement. C\u2019est l\u2019occasion pour faire une pr\u00e9sentation de l\u2019\u00e9volution du partitionnement dans PostgreSQL de la version 9.6 \u00e0 la version&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-14T12:27:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-22T16:27:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2019\/11\/PG_Partitioning_1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1095\" \/>\n\t<meta property=\"og:image:height\" content=\"614\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Capdata team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Capdata team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\"},\"author\":{\"name\":\"Capdata team\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9\"},\"headline\":\"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2)\",\"datePublished\":\"2019-11-14T12:27:22+00:00\",\"dateModified\":\"2019-11-22T16:27:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\"},\"wordCount\":920,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"declaratif\",\"declarative\",\"Elimination\",\"h\u00e9ritage\",\"natif\",\"Parallel\",\"parallelisme\",\"partition\",\"partitionnement\",\"pg\",\"Postgres\",\"pruning\",\"vacuum\"],\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\",\"name\":\"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2) - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2019-11-14T12:27:22+00:00\",\"dateModified\":\"2019-11-22T16:27:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9\",\"name\":\"Capdata team\",\"sameAs\":[\"https:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2) - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/","og_locale":"fr_FR","og_type":"article","og_title":"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2) - Capdata TECH BLOG","og_description":"Le PostgreSQL Global Development Group (PGDG) vient d\u2019annoncer la sortie de PostgreSQL 12 qui apporte de grosse am\u00e9lioration sur le partitionnement. C\u2019est l\u2019occasion pour faire une pr\u00e9sentation de l\u2019\u00e9volution du partitionnement dans PostgreSQL de la version 9.6 \u00e0 la version&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2019-11-14T12:27:22+00:00","article_modified_time":"2019-11-22T16:27:31+00:00","og_image":[{"width":1095,"height":614,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2019\/11\/PG_Partitioning_1.png","type":"image\/png"}],"author":"Capdata team","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Capdata team","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/"},"author":{"name":"Capdata team","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9"},"headline":"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2)","datePublished":"2019-11-14T12:27:22+00:00","dateModified":"2019-11-22T16:27:31+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/"},"wordCount":920,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["declaratif","declarative","Elimination","h\u00e9ritage","natif","Parallel","parallelisme","partition","partitionnement","pg","Postgres","pruning","vacuum"],"articleSection":["PostgreSQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/","url":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/","name":"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2) - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2019-11-14T12:27:22+00:00","dateModified":"2019-11-22T16:27:31+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/postgresql-evolution-du-partitionnement-de-9-6-a-12-1-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL : \u00e9volution du partitionnement de 9.6 \u00e0 12 (1\/2)"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9","name":"Capdata team","sameAs":["https:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=8084"}],"version-history":[{"count":10,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8084\/revisions"}],"predecessor-version":[{"id":8168,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8084\/revisions\/8168"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/8137"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=8084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=8084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=8084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}