{"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:33:13","modified_gmt":"2025-01-31T10:33:13","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>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>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>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>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>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>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>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;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[77],"type_dbi":[],"class_list":["post-36912","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 v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze - 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-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;]\" \/>\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 Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-31T10:28:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-31T10:33:13+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\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\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze\",\"datePublished\":\"2025-01-31T10:28:23+00:00\",\"dateModified\":\"2025-01-31T10:33:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/\"},\"wordCount\":189,\"commentCount\":0,\"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-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 Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2025-01-31T10:28:23+00:00\",\"dateModified\":\"2025-01-31T10:33:13+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"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 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\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze - 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-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;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/","og_site_name":"dbi Blog","article_published_time":"2025-01-31T10:28:23+00:00","article_modified_time":"2025-01-31T10:33:13+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","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":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"PostgreSQL 18: Per-relation cumulative statistics for [auto]vacuum and [auto]analyze","datePublished":"2025-01-31T10:28:23+00:00","dateModified":"2025-01-31T10:33:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-18-per-relation-statistics-for-autovacuum-and-autoanalyze\/"},"wordCount":189,"commentCount":0,"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-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 Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2025-01-31T10:28:23+00:00","dateModified":"2025-01-31T10:33:13+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"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 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\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_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\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=36912"}],"version-history":[{"count":10,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36912\/revisions"}],"predecessor-version":[{"id":36960,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36912\/revisions\/36960"}],"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"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=36912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}