{"id":14410,"date":"2020-07-10T13:50:13","date_gmt":"2020-07-10T11:50:13","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/"},"modified":"2024-11-08T15:15:32","modified_gmt":"2024-11-08T14:15:32","slug":"the-log_duration-parameter-in-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/","title":{"rendered":"The log_duration parameter in PostgreSQL"},"content":{"rendered":"<p><a href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT\" target=\"_blank\" rel=\"noopener noreferrer\">log_duration<\/a> is a useful point for finding slow running queries and to find performance issues also on the applications side using PostgreSQL as database. Another topic is finding issues with Java Applications using Hibernate after a migration to PostgreSQL. Often <a href=\"https:\/\/hibernate.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Hibernate<\/a> switches from lazy to eager mode and this has massive impact on the application performance.<\/p>\n<p>In this context I will also describe one of the most useful extensions: <a href=\"https:\/\/www.postgresql.org\/docs\/current\/pgstatstatements.html\" target=\"_blank\" rel=\"noopener noreferrer\">pg_stat_statements<\/a>.<\/p>\n<p>The log duration shown in the logs of PostgreSQL includes the client time, so if you have slow queries it can be also issued by network problems.<\/p>\n<p>For demonstaration I will start with creating my own database:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# create database blog_log_duration;\n<\/pre>\n<p>After creating the database we leave psql with &#8220;\\q&#8221; and with psql log_log_duration as the default; we connect to our newly created database. The parameter log_duration will switch on logging of the duration for everything and than log_min_duration_statement will show the queries when exeeding the specified runtime.<\/p>\n<p>So both paramters settings, log_duration to on and log_min_duration_statement with a value will fill up the logfile, it makes no sense, so we use log_min_duration_statement only.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# alter system set log_min_duration_statement = 10000;\nALTER SYSTEM\n<\/pre>\n<p>As an example to log queries runing longer than 10s, the parameter setting is in ms.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# select pg_reload_conf();\npg_reload_conf\n----------------\nt\n(1 row)\n\npostgres=#\n<\/pre>\n<p>The new setting becomes active as global setting for all databases on this instance. Quitting the postgres connection with &#8220;\\q&#8221; and connecting to our newly created database with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">psql blog_log_duration;\n\npostgres=#select pg_sleep(11);\n<\/pre>\n<p>In the log file we will see the following:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">LOG: duration: 11032.666 ms statement: select pg_sleep(11);\n<\/pre>\n<p>Another possibility is to change these settings for one specific database only, for this we need to revoke the global setting with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# alter system reset log_min_duration_statement;\nALTER SYSTEM\n<\/pre>\n<p>And reloading the configuration with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# select pg_reload_conf();\npg_reload_conf\n----------------\nt\n(1 row)\n<\/pre>\n<p>Checking with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# select pg_sleep(11);\n<\/pre>\n<p>&#8230; shows no new entry in the log file.<\/p>\n<p>Now we can change this parameter for our test database we created at the beginning:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# alter database blog_log_duration set log_min_duration_statement = 5000;\n<\/pre>\n<p>Checking for the postgres database:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# select pg_sleep(11);\n<\/pre>\n<p>&#8230; shows again no new entry in the log file.<\/p>\n<p>Settings on database level overruling global settings, just as notice.<\/p>\n<p>Disconnecting from the postgres database with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# \\q\n<\/pre>\n<p>Connecting to the blog_log_duration database with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">psql blog_log_duration\n<\/pre>\n<p>And checking here with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">blog_log_duration=# select pg_sleep(6);\npg_sleep\n----------\n\n(1 row)\n\nblog_log_duration=#\n<\/pre>\n<p>This results in the following line in the log file:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">LOG: duration: 6005.967 ms statement: select pg_sleep(6);\n<\/pre>\n<h2>Extension pg_stat_statements<\/h2>\n<p>This Extension is one of the most useful, it shows what queries have been sent to the database, how often, average, min and max runtime.<\/p>\n<p>For using pg_stat_statements we need to preload libraries, the required configuration can be done with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# alter system set shared_preload_libraries = 'pg_stat_statements';\n<\/pre>\n<p>Than a restart is required, a pg_reload_conf(); is not enough.<\/p>\n<p>Then we connect again to our test database with psql blog_log_duration and create the extension with:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">blog_log_duration=# create extension pg_stat_statements;\nCREATE EXTENSION\nblog_log_duration=#\n\nblog_log_duration-# \\d pg_stat_statements\nView \"public.pg_stat_statements\"\nColumn | Type | Collation | Nullable | Default\n---------------------+------------------+-----------+----------+---------\nuserid | oid | | |\ndbid | oid | | |\nqueryid | bigint | | |\nquery | text | | |\ncalls | bigint | | |\ntotal_time | double precision | | |\nmin_time | double precision | | |\nmax_time | double precision | | |\nmean_time | double precision | | |\nstddev_time | double precision | | |\nrows | bigint | | |\nshared_blks_hit | bigint | | |\nshared_blks_read | bigint | | |\nshared_blks_dirtied | bigint | | |\nshared_blks_written | bigint | | |\nlocal_blks_hit | bigint | | |\nlocal_blks_read | bigint | | |\nlocal_blks_dirtied | bigint | | |\nlocal_blks_written | bigint | | |\ntemp_blks_read | bigint | | |\ntemp_blks_written | bigint | | |\nblk_read_time | double precision | | |\nblk_write_time | double precision | | |\n\nblog_log_duration-# \u00a8\n<\/pre>\n<p>This gives an overview over the view where we can now get the query informations we want to have. This can become very huge, so there are some parameters that can be set to make it more handable.<\/p>\n<ul>\n<li>pg_stat_statements.max is setting the maximum number of kept queries in this statistic, 1000 for example means the last 1000 queries kept, 5000 is the default.<\/li>\n<li>pg_stat_statements.track specifies the queries tracked<\/li>\n<li>pg_stat_statements.track = all tracks nested statements (including statements invoked within functions), none is disabling statement statistics collection and top is tracing top-level statements (those issued directly by clients), the default value is top.<\/li>\n<li>pg_stat_statements.save specifies if the statistics are saved across shutdowns or restarts, the default is on.<\/li>\n<\/ul>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">blog_log_duration=# select pg_stat_statements_reset();\npg_stat_statements_reset\n--------------------------\n\n(1 row)\n\nblog_log_duration=#\n<\/pre>\n<p>&#8230;is resetting the statistics;<\/p>\n<p>Several runs of select pg_sleep();<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft  wp-image-41670\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\" alt=\"\" width=\"868\" height=\"107\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Both informations are very usefull, showing slow queries is one part, how often they used the other one and this defines the priority where to look at first.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>log_duration is a useful point for finding slow running queries and to find performance issues also on the applications side using PostgreSQL as database. Another topic is finding issues with Java Applications using Hibernate after a migration to PostgreSQL. Often Hibernate switches from lazy to eager mode and this has massive impact on the application [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":14411,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[2602],"type_dbi":[],"class_list":["post-14410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-postgresql-2"],"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>The log_duration parameter in PostgreSQL - 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\/the-log_duration-parameter-in-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The log_duration parameter in PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"log_duration is a useful point for finding slow running queries and to find performance issues also on the applications side using PostgreSQL as database. Another topic is finding issues with Java Applications using Hibernate after a migration to PostgreSQL. Often Hibernate switches from lazy to eager mode and this has massive impact on the application [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-10T11:50:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-08T14:15:32+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\" \/>\n\t<meta property=\"og:image:width\" content=\"908\" \/>\n\t<meta property=\"og:image:height\" content=\"112\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"4 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\/the-log_duration-parameter-in-postgresql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b\"},\"headline\":\"The log_duration parameter in PostgreSQL\",\"datePublished\":\"2020-07-10T11:50:13+00:00\",\"dateModified\":\"2024-11-08T14:15:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/\"},\"wordCount\":601,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\",\"keywords\":[\"postgresql\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/\",\"name\":\"The log_duration parameter in PostgreSQL - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\",\"datePublished\":\"2020-07-10T11:50:13+00:00\",\"dateModified\":\"2024-11-08T14:15:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png\",\"width\":908,\"height\":112},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The log_duration parameter in PostgreSQL\"}]},{\"@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\/59554f0d99383431eb6ed427e338952b\",\"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":"The log_duration parameter in PostgreSQL - 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\/the-log_duration-parameter-in-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"The log_duration parameter in PostgreSQL","og_description":"log_duration is a useful point for finding slow running queries and to find performance issues also on the applications side using PostgreSQL as database. Another topic is finding issues with Java Applications using Hibernate after a migration to PostgreSQL. Often Hibernate switches from lazy to eager mode and this has massive impact on the application [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/","og_site_name":"dbi Blog","article_published_time":"2020-07-10T11:50:13+00:00","article_modified_time":"2024-11-08T14:15:32+00:00","og_image":[{"width":908,"height":112,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png","type":"image\/png"}],"author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"headline":"The log_duration parameter in PostgreSQL","datePublished":"2020-07-10T11:50:13+00:00","dateModified":"2024-11-08T14:15:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/"},"wordCount":601,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png","keywords":["postgresql"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/","name":"The log_duration parameter in PostgreSQL - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png","datePublished":"2020-07-10T11:50:13+00:00","dateModified":"2024-11-08T14:15:32+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/pg_stat_statements.png","width":908,"height":112},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/the-log_duration-parameter-in-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The log_duration parameter in PostgreSQL"}]},{"@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\/59554f0d99383431eb6ed427e338952b","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\/14410","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=14410"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14410\/revisions"}],"predecessor-version":[{"id":35666,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14410\/revisions\/35666"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/14411"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14410"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}