{"id":36912,"date":"2025-01-31T11:28:23","date_gmt":"2025-01-31T10:28:23","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=36912"},"modified":"2025-01-31T11:28:23","modified_gmt":"2025-01-31T10:28:23","slug":"postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/","title":{"rendered":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This is about another feature which will most likely show up in PostgreSQL 18 later this year. The statistic system is something which gets more and more details with almost every release of PostgreSQL, and PostgreSQL 18 will be no exception to that.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When you take a look at <a href=\"https:\/\/www.postgresql.org\/docs\/17\/monitoring-stats.html#MONITORING-PG-STAT-ALL-TABLES-VIEW\" target=\"_blank\" rel=\"noreferrer noopener\">pg_stat_all_tables<\/a> (or pg_stat_user_tables) in PostgreSQL 17, it looks like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,7]; title: ; notranslate\" title=\"\">\npostgres=# select version();\n                                                           version                                                           \n-----------------------------------------------------------------------------------------------------------------------------\n PostgreSQL 17.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7), 64-bit\n(1 row)\n\npostgres=#  \\d pg_stat_all_tables \n                      View &quot;pg_catalog.pg_stat_all_tables&quot;\n       Column        |           Type           | Collation | Nullable | Default \n---------------------+--------------------------+-----------+----------+---------\n relid               | oid                      |           |          | \n schemaname          | name                     |           |          | \n relname             | name                     |           |          | \n seq_scan            | bigint                   |           |          | \n last_seq_scan       | timestamp with time zone |           |          | \n seq_tup_read        | bigint                   |           |          | \n idx_scan            | bigint                   |           |          | \n last_idx_scan       | timestamp with time zone |           |          | \n idx_tup_fetch       | bigint                   |           |          | \n n_tup_ins           | bigint                   |           |          | \n n_tup_upd           | bigint                   |           |          | \n n_tup_del           | bigint                   |           |          | \n n_tup_hot_upd       | bigint                   |           |          | \n n_tup_newpage_upd   | bigint                   |           |          | \n n_live_tup          | bigint                   |           |          | \n n_dead_tup          | bigint                   |           |          | \n n_mod_since_analyze | bigint                   |           |          | \n n_ins_since_vacuum  | bigint                   |           |          | \n last_vacuum         | timestamp with time zone |           |          | \n last_autovacuum     | timestamp with time zone |           |          | \n last_analyze        | timestamp with time zone |           |          | \n last_autoanalyze    | timestamp with time zone |           |          | \n vacuum_count        | bigint                   |           |          | \n autovacuum_count    | bigint                   |           |          | \n analyze_count       | bigint                   |           |          | \n autoanalyze_count   | bigint                   |           |          | \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">There already are statistics for [auto]vacuum and [auto]analyze but there is no information about how much time the system spend in total for vacuum and analyze operations. This is now available:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,7,37,38,39,40]; title: ; notranslate\" title=\"\">\npostgres=# select version();\n                              version                               \n--------------------------------------------------------------------\n PostgreSQL 18devel on x86_64-linux, compiled by gcc-14.2.1, 64-bit\n(1 row)\n\npostgres=#  \\d pg_stat_all_tables \n                        View &quot;pg_catalog.pg_stat_all_tables&quot;\n         Column         |           Type           | Collation | Nullable | Default \n------------------------+--------------------------+-----------+----------+---------\n relid                  | oid                      |           |          | \n schemaname             | name                     |           |          | \n relname                | name                     |           |          | \n seq_scan               | bigint                   |           |          | \n last_seq_scan          | timestamp with time zone |           |          | \n seq_tup_read           | bigint                   |           |          | \n idx_scan               | bigint                   |           |          | \n last_idx_scan          | timestamp with time zone |           |          | \n idx_tup_fetch          | bigint                   |           |          | \n n_tup_ins              | bigint                   |           |          | \n n_tup_upd              | bigint                   |           |          | \n n_tup_del              | bigint                   |           |          | \n n_tup_hot_upd          | bigint                   |           |          | \n n_tup_newpage_upd      | bigint                   |           |          | \n n_live_tup             | bigint                   |           |          | \n n_dead_tup             | bigint                   |           |          | \n n_mod_since_analyze    | bigint                   |           |          | \n n_ins_since_vacuum     | bigint                   |           |          | \n last_vacuum            | timestamp with time zone |           |          | \n last_autovacuum        | timestamp with time zone |           |          | \n last_analyze           | timestamp with time zone |           |          | \n last_autoanalyze       | timestamp with time zone |           |          | \n vacuum_count           | bigint                   |           |          | \n autovacuum_count       | bigint                   |           |          | \n analyze_count          | bigint                   |           |          | \n autoanalyze_count      | bigint                   |           |          | \n total_vacuum_time      | double precision         |           |          | \n total_autovacuum_time  | double precision         |           |          | \n total_analyze_time     | double precision         |           |          | \n total_autoanalyze_time | double precision         |           |          | \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">To see that in action, lets create a small table and populate it:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,3]; title: ; notranslate\" title=\"\">\npostgres=# create table t ( a int, b text);\nCREATE TABLE\npostgres=# insert into t select i, i::text from generate_series(1,1000000) i;\nINSERT 0 1000000\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This triggers autovacuum (you&#8217;ll have to wait up to a minute before you see something, because of <a href=\"https:\/\/www.postgresql.org\/docs\/17\/runtime-config-autovacuum.html#GUC-AUTOVACUUM-NAPTIME\" target=\"_blank\" rel=\"noreferrer noopener\">autovacuum_naptime<\/a>) and you get the total time in ms spend for auto vacuum and auto analyze:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,2,3,4,5,6]; title: ; notranslate\" title=\"\">\npostgres=# select last_autovacuum\n                , last_autoanalyze\n                , total_autovacuum_time\n                , total_autoanalyze_time \n             from pg_stat_all_tables \n            where relname = &#039;t&#039;;\n\n        last_autovacuum        |       last_autoanalyze        | total_autovacuum_time | total_autoanalyze_time \n-------------------------------+-------------------------------+-----------------------+------------------------\n 2025-01-31 11:12:09.809252+01 | 2025-01-31 11:12:09.942748+01 |                   187 |                    134\n(1 row)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The same happens if you manually trigger either vacuum or analyze:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,2,3,4,5,6,12,14,15,15,16,17,18,19,27,28,29,30,31,32]; title: ; notranslate\" title=\"\">\npostgres=# select last_vacuum\n                , last_analyze\n                , total_vacuum_time\n                , total_analyze_time \n            from pg_stat_all_tables \n           where relname = &#039;t&#039;;\n last_vacuum | last_analyze | total_vacuum_time | total_analyze_time \n-------------+--------------+-------------------+--------------------\n             |              |                 0 |                  0\n(1 row)\n\npostgres=# analyze t;\nANALYZE\npostgres=# select last_vacuum\n                , last_analyze\n                , total_vacuum_time\n                , total_analyze_time \n            from pg_stat_all_tables \n           where relname = &#039;t&#039;;\n last_vacuum |         last_analyze          | total_vacuum_time | total_analyze_time \n-------------+-------------------------------+-------------------+--------------------\n             | 2025-01-31 11:23:07.102182+01 |                 0 |                 52\n(1 row)\n\npostgres=# vacuum t;\nVACUUM\npostgres=# select last_vacuum\n                , last_analyze\n                , total_vacuum_time\n                , total_analyze_time \n            from pg_stat_all_tables \n           where relname = &#039;t&#039;;\n          last_vacuum          |         last_analyze          | total_vacuum_time | total_analyze_time \n-------------------------------+-------------------------------+-------------------+--------------------\n 2025-01-31 11:23:12.286613+01 | 2025-01-31 11:23:07.102182+01 |                 1 |                 52\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Nice, this really helps in identifying the relations where [auto]vacuum and [auto]anaylze have spent most of the time on. Thanks to all <a href=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commitdiff;h=30a6ed0ce4bb18212ec38cdb537ea4b43bc99b83\" target=\"_blank\" rel=\"noreferrer noopener\">involved<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is about another feature which will most likely show up in PostgreSQL 18 later this year. The statistic system is something which gets more and more details with almost every release of PostgreSQL, and PostgreSQL 18 will be no exception to that. When you take a look at pg_stat_all_tables (or pg_stat_user_tables) in PostgreSQL 17,&hellip;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4133],"tags":[],"class_list":["post-36912","post","type-post","status-publish","format-standard","hentry","category-database"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze - dbi services | 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:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze\" \/>\n<meta property=\"og:description\" content=\"This is about another feature which will most likely show up in PostgreSQL 18 later this year. The statistic system is something which gets more and more details with almost every release of PostgreSQL, and PostgreSQL 18 will be no exception to that. When you take a look at pg_stat_all_tables (or pg_stat_user_tables) in PostgreSQL 17,&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-31T10:28:23+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"headline\":\"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze\",\"datePublished\":\"2025-01-31T10:28:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/\"},\"wordCount\":189,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"articleSection\":[\"Database\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/\",\"name\":\"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2025-01-31T10:28:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"caption\":\"Open source Team\"},\"description\":\"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze - dbi services | 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:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze","og_description":"This is about another feature which will most likely show up in PostgreSQL 18 later this year. The statistic system is something which gets more and more details with almost every release of PostgreSQL, and PostgreSQL 18 will be no exception to that. When you take a look at pg_stat_all_tables (or pg_stat_user_tables) in PostgreSQL 17,&hellip;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2025-01-31T10:28:23+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Open source Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"headline":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze","datePublished":"2025-01-31T10:28:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/"},"wordCount":189,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"articleSection":["Database"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/","name":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2025-01-31T10:28:23+00:00","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","caption":"Open source Team"},"description":"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.","url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=36912"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36912\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=36912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=36912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=36912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}