{"id":9742,"date":"2023-03-16T06:36:32","date_gmt":"2023-03-16T05:36:32","guid":{"rendered":"https:\/\/blog.capdata.fr\/?p=9742"},"modified":"2023-03-21T18:21:39","modified_gmt":"2023-03-21T17:21:39","slug":"nouveautes-pg_stat_statements-avec-postgresql-15","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/","title":{"rendered":"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15"},"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%2F9742&#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%2F9742&#038;title=Nouveaut%C3%A9s%20pg_stat_statements%20avec%20PostgreSQL%2015\" 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=Nouveaut%C3%A9s%20pg_stat_statements%20avec%20PostgreSQL%2015&#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%2F9742\" 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>Salut \u00e0 toutes et tous, aujourd&#8217;hui un petit post pour \u00e9voquer les quelques petites modifications apport\u00e9es \u00e0 pg_stat_statements, l&#8217;extension phare de PostgreSQL, et qui ont pu passer inaper\u00e7ues depuis le 13 octobre, date de sortie de la derni\u00e8re release majeure du SGBD aux grandes oreilles. <\/p>\n<p>Si vous n&#8217;\u00eates pas familiers de pg_stat_statements je vous renvoie sur mon talk aux <a href=\"https:\/\/blog.capdata.fr\/index.php\/pgday-nantes-2021-session-sur-pg_stat_statements\/\">PGDays en 2021<\/a>.<\/p>\n<p>Si on regarde d&#8217;un peu plus pr\u00e8s la <a href=\"https:\/\/www.postgresql.org\/docs\/current\/pgstatstatements.html\">documentation de r\u00e9f\u00e9rence<\/a>, on va retrouver deux ajouts principaux: <\/p>\n<h1>S\u00e9paration des stats IO data &#038; temporary<\/h1>\n<p>Tout d&#8217;abord en version 14, les colonnes <em>blk_read_time<\/em> et <em>blk_write_time<\/em> comptabilisaient les entr\u00e9es \/ sorties vers tous les blocs, \u00e0 la fois data et temporary. En version 15, deux nouvelles colonnes <em>temp_blk_read_time <\/em>et <em>temp_blk_write_time<\/em> sont ajout\u00e9es \u00e0 la vue, pour s\u00e9parer les deux types d&#8217;acc\u00e8s. Les anciennes colonnes ne font donc plus r\u00e9f\u00e9rence qu&#8217;aux acc\u00e8s aux blocs de data, et les 2 nouvelles qu&#8217;aux acc\u00e8s aux blocs temporary. <\/p>\n<h1>Infos sur les compilations JIT:<\/h1>\n<p>La deuxi\u00e8me diff\u00e9rence qui est nettement plus visible, est l&#8217;ajout de toute la m\u00e9trologie associ\u00e9e \u00e0 la compilation Jit, introduite en 2018 pour la version 11 par <a href=\"https:\/\/www.postgresql.org\/message-id\/20161206034955.bh33paeralxbtluv@alap3.anarazel.de\">Andres Freund<\/a>, et qui permet d&#8217;acc\u00e9l\u00e9rer l&#8217;ex\u00e9cution de code PL\/PGSQL davantage en le compilant en langage natif \u00e0 l&#8217;ex\u00e9cution, si le co\u00fbt d\u00e9passe un seuil fix\u00e9 par le param\u00e8tre <a href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-query.html#GUC-JIT-ABOVE-COST\">jit_above_cost<\/a>.  Parmi ces nouvelles colonnes : <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\njit_functions\u00a0          : Total number of functions JIT-compiled by the statement\r\njit_generation_time\u00a0    : Total time spent by the statement on generating JIT code, in milliseconds\r\njit_inlining_count      : Number of times functions have been inlined\r\njit_inlining_time       : Total time spent by the statement on inlining functions, in milliseconds\r\njit_optimization_count  : Number of times the statement has been optimized\r\njit_optimization_time   : Total time spent by the statement on optimizing, in milliseconds\r\njit_emission_count      : Number of times code has been emitted\r\njit_emission_time       : Total time spent by the statement on emitting code, in milliseconds\r\n<\/pre>\n<p>Petit test pour voir avec une bonne grosse requ\u00eate qui va nous faire un parallel seq scan et un hash aggregate en sortie, le tout sur 40 millions de lignes. Pour avoir un peu de volum\u00e9trie j&#8217;utilise la base de test de <a href=\"https:\/\/musicbrainz.org\/doc\/MusicBrainz_Database\/Download\">musicbrainz<\/a> que je vous recommande: <\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\n(postgres@[local]:5432) [postgres] &gt; select name, setting from pg_settings where name in ('jit','jit_above_cost') ;\r\n      name      | setting \r\n----------------+---------\r\n jit            | on\r\n jit_above_cost | 100000\r\n(2 rows)\r\n\r\n(postgres@[local]:5432) [postgres] &gt; \\c musicbrainz\r\nYou are now connected to database &quot;musicbrainz&quot; as user &quot;postgres&quot;.\r\n\r\n(postgres@[local]:5432) [musicbrainz] &gt; explain select name, count(id), avg(length) from track group by name having count(id) &gt; 5 ;\r\n                                            QUERY PLAN                                             \r\n---------------------------------------------------------------------------------------------------\r\n Finalize GroupAggregate  (cost=2399394.22..2481941.16 rows=104483 width=60)\r\n   Group Key: name\r\n   Filter: (count(id) &gt; 5)\r\n   -&gt;  Gather Merge  (cost=2399394.22..2472537.66 rows=626900 width=60)\r\n         Workers Planned: 2\r\n         -&gt;  Sort  (cost=2398394.20..2399177.83 rows=313450 width=60)\r\n               Sort Key: name\r\n               -&gt;  Partial HashAggregate  (cost=2124704.40..2357991.54 rows=313450 width=60)\r\n                     Group Key: name\r\n                     Planned Partitions: 16\r\n                     -&gt;  Parallel Seq Scan on track  (cost=0.00..741158.22 rows=16834022 width=28)\r\n JIT:\r\n   Functions: 8\r\n   Options: Inlining true, Optimization true, Expressions true, Deforming true\r\n(14 rows)\r\n<\/pre>\n<p>OK on voit bien qu&#8217;avec notre cost final de +2399394 on est au dessus des 100K minimums n\u00e9cessaire pour forcer le JIT. Ex\u00e9cutons la requ\u00eate pour voir ce que l&#8217;on retrouve dans pg_stat_statements:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\n(postgres@[local]:5432) [musicbrainz] &gt; select name, count(id), avg(length) from track group by name having count(id) &gt; 5 ;\r\n(...)\r\n(746785 rows)\r\nTime: 210439.640 ms (03:30.440)\r\n\r\n(postgres@[local]:5432) [postgres] &gt; \\x\r\nExpanded display is on.\r\n(postgres@[local]:5432) [postgres] &gt; select * from pg_stat_statements where query like 'select name, count(id), avg(length) from track%' ;\r\n-[ RECORD 1 ]----------+-----------------------------------------------------------------------------------\r\nuserid                 | 10\r\ndbid                   | 16388\r\ntoplevel               | t\r\nqueryid                | 6022129428306982548\r\nquery                  | select name, count(id), avg(length) from track group by name having count(id) &gt; $1\r\nplans                  | 0\r\ntotal_plan_time        | 0\r\nmin_plan_time          | 0\r\nmax_plan_time          | 0\r\nmean_plan_time         | 0\r\nstddev_plan_time       | 0\r\ncalls                  | 1\r\ntotal_exec_time        | 210435.894037\r\nmin_exec_time          | 210435.894037\r\nmax_exec_time          | 210435.894037\r\nmean_exec_time         | 210435.894037\r\nstddev_exec_time       | 0\r\nrows                   | 746785\r\nshared_blks_hit        | 16\r\nshared_blks_read       | 572818\r\nshared_blks_dirtied    | 0\r\nshared_blks_written    | 0\r\nlocal_blks_hit         | 0\r\nlocal_blks_read        | 0\r\nlocal_blks_dirtied     | 0\r\nlocal_blks_written     | 0\r\ntemp_blks_read         | 1071638\r\ntemp_blks_written      | 1325851\r\nblk_read_time          | 0\r\nblk_write_time         | 0\r\ntemp_blk_read_time     | 0\r\ntemp_blk_write_time    | 0\r\nwal_records            | 0\r\nwal_fpi                | 0\r\nwal_bytes              | 0\r\njit_functions          | 15\r\njit_generation_time    | 1.491564\r\njit_inlining_count     | 1\r\njit_inlining_time      | 237.918294\r\njit_optimization_count | 1\r\njit_optimization_time  | 360.290152\r\njit_emission_count     | 1\r\njit_emission_time      | 230.831919\r\n<\/pre>\n<p>Le cost \u00e9tant \u00e0 2M+ on aura donc \u00e0 la fois inlining et optimization car les 2 seuils <em>jit_inline_above_cost<\/em> et <em>jit_optimize_above_cost <\/em>sont \u00e0 500K, ce qui est confirm\u00e9 par la sortie de PGSS ci-dessus.<\/p>\n<p>Pour ce qui est de la version 16, qui devrait \u00eatre ouverte en Beta d&#8217;ici un ou deux mois, pour l&#8217;instant <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/pgstatstatements.html\">pas d&#8217;ajout de nouvelle colonne <\/a>\u00e0 l&#8217;horizon. <\/p>\n<p>Pensez \u00e0 vous abonner \u00e0 la page <a href=\"https:\/\/www.linkedin.com\/company\/136256\/admin\/\">linkedin <\/a> et \u00e0 la <a href=\"https:\/\/www.youtube.com\/@Capdata\">cha\u00eene youtube<\/a> de Capdata si ce n&#8217;est pas d\u00e9j\u00e0 fait !<br \/>\nA+ <\/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%2F9742&#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%2F9742&#038;title=Nouveaut%C3%A9s%20pg_stat_statements%20avec%20PostgreSQL%2015\" 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=Nouveaut%C3%A9s%20pg_stat_statements%20avec%20PostgreSQL%2015&#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%2F9742\" 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>Salut \u00e0 toutes et tous, aujourd&#8217;hui un petit post pour \u00e9voquer les quelques petites modifications apport\u00e9es \u00e0 pg_stat_statements, l&#8217;extension phare de PostgreSQL, et qui ont pu passer inaper\u00e7ues depuis le 13 octobre, date de sortie de la derni\u00e8re release majeure&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":9746,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[266],"tags":[441,381],"class_list":["post-9742","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postgresql","tag-jit","tag-pg_stat_statements"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15 pg_stat_statements PostgreSQL 15<\/title>\n<meta name=\"description\" content=\"Nouvelles colonnes ajout\u00e9es en version PostgreSQL 15 % Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15\" \/>\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\/nouveautes-pg_stat_statements-avec-postgresql-15\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15 pg_stat_statements PostgreSQL 15\" \/>\n<meta property=\"og:description\" content=\"Nouvelles colonnes ajout\u00e9es en version PostgreSQL 15 % Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-16T05:36:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-21T17:21:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/03\/237a6ff1fabba5341ed5b872c79c701a.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"787\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\/nouveautes-pg_stat_statements-avec-postgresql-15\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15\",\"datePublished\":\"2023-03-16T05:36:32+00:00\",\"dateModified\":\"2023-03-21T17:21:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\"},\"wordCount\":844,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"JIT\",\"pg_stat_statements\"],\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\",\"name\":\"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15 pg_stat_statements PostgreSQL 15\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2023-03-16T05:36:32+00:00\",\"dateModified\":\"2023-03-21T17:21:39+00:00\",\"description\":\"Nouvelles colonnes ajout\u00e9es en version PostgreSQL 15 % Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15\"}]},{\"@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\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15 pg_stat_statements PostgreSQL 15","description":"Nouvelles colonnes ajout\u00e9es en version PostgreSQL 15 % Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15","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\/nouveautes-pg_stat_statements-avec-postgresql-15\/","og_locale":"fr_FR","og_type":"article","og_title":"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15 pg_stat_statements PostgreSQL 15","og_description":"Nouvelles colonnes ajout\u00e9es en version PostgreSQL 15 % Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15","og_url":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2023-03-16T05:36:32+00:00","article_modified_time":"2023-03-21T17:21:39+00:00","og_image":[{"width":1400,"height":787,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/03\/237a6ff1fabba5341ed5b872c79c701a.jpg","type":"image\/jpeg"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15","datePublished":"2023-03-16T05:36:32+00:00","dateModified":"2023-03-21T17:21:39+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/"},"wordCount":844,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["JIT","pg_stat_statements"],"articleSection":["PostgreSQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/","url":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/","name":"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15 pg_stat_statements PostgreSQL 15","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2023-03-16T05:36:32+00:00","dateModified":"2023-03-21T17:21:39+00:00","description":"Nouvelles colonnes ajout\u00e9es en version PostgreSQL 15 % Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/nouveautes-pg_stat_statements-avec-postgresql-15\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Nouveaut\u00e9s pg_stat_statements avec PostgreSQL 15"}]},{"@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\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/9742","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=9742"}],"version-history":[{"count":8,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/9742\/revisions"}],"predecessor-version":[{"id":9777,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/9742\/revisions\/9777"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/9746"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=9742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=9742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=9742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}