{"id":29257,"date":"2023-11-06T14:52:00","date_gmt":"2023-11-06T13:52:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=29257"},"modified":"2023-11-06T08:53:58","modified_gmt":"2023-11-06T07:53:58","slug":"postgresql-17-new-catalog-view-pg_stat_checkpointer","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/","title":{"rendered":"PostgreSQL 17: New catalog view pg_stat_checkpointer"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Up to PostgreSQL 16 checkpointer related statistics are available in <a href=\"https:\/\/www.postgresql.org\/docs\/16\/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW\" target=\"_blank\" rel=\"noreferrer noopener\">pg_stat_bgwriter<\/a>. As the work of bgwriter and checkpointer has been split into two separate processes back in 2011 for PostgreSQL 9.2 (see 806a2aee3791), it makes sense to split the statistics related to those background processes as well. This has now happened for PostgreSQL 17.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Up to PostgreSQL 16 the pg_stat_bgwriter catalog view contains these fields:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\npostgres=# select version();\n                                                   version                                                    \n--------------------------------------------------------------------------------------------------------------\n PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit\n(1 row)\n\npostgres=# \\d pg_stat_bgwriter \n                        View &quot;pg_catalog.pg_stat_bgwriter&quot;\n        Column         |           Type           | Collation | Nullable | Default \n-----------------------+--------------------------+-----------+----------+---------\n checkpoints_timed     | bigint                   |           |          | \n checkpoints_req       | bigint                   |           |          | \n checkpoint_write_time | double precision         |           |          | \n checkpoint_sync_time  | double precision         |           |          | \n buffers_checkpoint    | bigint                   |           |          | \n buffers_clean         | bigint                   |           |          | \n maxwritten_clean      | bigint                   |           |          | \n buffers_backend       | bigint                   |           |          | \n buffers_backend_fsync | bigint                   |           |          | \n buffers_alloc         | bigint                   |           |          | \n stats_reset           | timestamp with time zone |           |          | \n\npostgres=# \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Starting with PostgreSQL 17 this view looks much simpler and all checkpointer related columns have been removed:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\npostgres=# select version();\n                              version                               \n--------------------------------------------------------------------\n PostgreSQL 17devel on x86_64-linux, compiled by gcc-12.2.0, 64-bit\n(1 row)\n\npostgres=# \\d pg_stat_bgwriter \n                      View &quot;pg_catalog.pg_stat_bgwriter&quot;\n      Column      |           Type           | Collation | Nullable | Default \n------------------+--------------------------+-----------+----------+---------\n buffers_clean    | bigint                   |           |          | \n maxwritten_clean | bigint                   |           |          | \n buffers_alloc    | bigint                   |           |          | \n stats_reset      | timestamp with time zone |           |          | \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">All those columns can now be found in pg_stat_checkpointer:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\npostgres=# select version();\n                              version                               \n--------------------------------------------------------------------\n PostgreSQL 17devel on x86_64-linux, compiled by gcc-12.2.0, 64-bit\n(1 row)\npostgres=# \\d pg_stat_checkpointer \n                   View &quot;pg_catalog.pg_stat_checkpointer&quot;\n     Column      |           Type           | Collation | Nullable | Default \n-----------------+--------------------------+-----------+----------+---------\n num_timed       | bigint                   |           |          | \n num_requested   | bigint                   |           |          | \n write_time      | double precision         |           |          | \n sync_time       | double precision         |           |          | \n buffers_written | bigint                   |           |          | \n stats_reset     | timestamp with time zone |           |          | \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Looks much cleaner like this, one statistic view per process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Up to PostgreSQL 16 checkpointer related statistics are available in pg_stat_bgwriter. As the work of bgwriter and checkpointer has been split into two separate processes back in 2011 for PostgreSQL 9.2 (see 806a2aee3791), it makes sense to split the statistics related to those background processes as well. This has now happened for PostgreSQL 17. Up [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[77],"type_dbi":[],"class_list":["post-29257","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","tag-postgresql"],"acf":[],"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 17: New catalog view pg_stat_checkpointer - dbi 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-17-new-catalog-view-pg_stat_checkpointer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 17: New catalog view pg_stat_checkpointer\" \/>\n<meta property=\"og:description\" content=\"Up to PostgreSQL 16 checkpointer related statistics are available in pg_stat_bgwriter. As the work of bgwriter and checkpointer has been split into two separate processes back in 2011 for PostgreSQL 9.2 (see 806a2aee3791), it makes sense to split the statistics related to those background processes as well. This has now happened for PostgreSQL 17. Up [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-06T13:52:00+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\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=\"1 minute\" \/>\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-17-new-catalog-view-pg_stat_checkpointer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"headline\":\"PostgreSQL 17: New catalog view pg_stat_checkpointer\",\"datePublished\":\"2023-11-06T13:52:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/\"},\"wordCount\":109,\"commentCount\":2,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/\",\"name\":\"PostgreSQL 17: New catalog view pg_stat_checkpointer - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2023-11-06T13:52:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-new-catalog-view-pg_stat_checkpointer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 17: New catalog view pg_stat_checkpointer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"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\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 17: New catalog view pg_stat_checkpointer - dbi 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-17-new-catalog-view-pg_stat_checkpointer\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 17: New catalog view pg_stat_checkpointer","og_description":"Up to PostgreSQL 16 checkpointer related statistics are available in pg_stat_bgwriter. As the work of bgwriter and checkpointer has been split into two separate processes back in 2011 for PostgreSQL 9.2 (see 806a2aee3791), it makes sense to split the statistics related to those background processes as well. This has now happened for PostgreSQL 17. Up [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/","og_site_name":"dbi Blog","article_published_time":"2023-11-06T13:52:00+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"headline":"PostgreSQL 17: New catalog view pg_stat_checkpointer","datePublished":"2023-11-06T13:52:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/"},"wordCount":109,"commentCount":2,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/","name":"PostgreSQL 17: New catalog view pg_stat_checkpointer - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2023-11-06T13:52:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-new-catalog-view-pg_stat_checkpointer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 17: New catalog view pg_stat_checkpointer"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","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":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"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\/29257","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=29257"}],"version-history":[{"count":4,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29257\/revisions"}],"predecessor-version":[{"id":29261,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29257\/revisions\/29261"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=29257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=29257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=29257"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=29257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}