{"id":5144,"date":"2015-05-04T12:25:54","date_gmt":"2015-05-04T10:25:54","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/"},"modified":"2015-05-04T12:25:54","modified_gmt":"2015-05-04T10:25:54","slug":"variations-on-1m-rows-insert2-commit-write-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/","title":{"rendered":"Variations on 1M rows insert(2): commit write &#8211; PostgreSQL"},"content":{"rendered":"<p>Franck was quite fast with his second post <a href=\"https:\/\/www.dbi-services.com\/index.php\/blog\/entry\/insert1m-commit\" target=\"_blank\">Variations on 1M rows insert(2): commit write<\/a>. Lets see what we can do on the PostgreSQL side.<br \/>\n<img decoding=\"async\" id=\"system-readmore\" class=\"mceItemReadMore\" title=\"Read More\" src=\"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif\" alt=\"Read More\" \/><br \/>\nI&#8217;ll take the same test table as Franck again:<\/p>\n<pre>create table DEMO (\"id\" number , \"text\" varchar2(15), \"number\" number) ;<\/pre>\n<p>The pgplsql block which corresponds to Frank&#8217;s plsql block looks like this:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">\\timing on\ntruncate table DEMO;\nDO $$DECLARE\n  l_people_array varchar(15)[12] := '{\"Marc\", \"Bill\", \"George\", \"Eliot\", \"Matt\", \"Trey\", \"Tracy\",\"Greg\", \"Steve\", \"Kristina\", \"Katie\", \"Jeff\"}';\n  n int;\nBEGIN\n  for i in 0..1e6 loop\n     n:=trunc(random()*1000+1);\n     begin\n       insert into DEMO values( i , l_people_array[floor((random()*11))+1::int] , n );\n     exception when others then raise;\n     end;\n  end loop;\nEND$$;\n<\/pre>\n<p>Some explanations: In pgplsql we can not do a commit inside a loop. Either everything <a href=\"http:\/\/www.postgresql.org\/docs\/current\/interactive\/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING\" target=\"_blank\">is committed or nothing<\/a>. But we can force the same behavior by using a begin\/exception\/end block. Lets see the results:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">Time: 5.920 ms\nTRUNCATE TABLE\nTime: 10.527 ms\nLOG:  checkpoints are occurring too frequently (5 seconds apart)\nHINT:  Consider increasing the configuration parameter \"checkpoint_segments\".\nDO\nTime: 9271.443 ms\n<\/pre>\n<p>Compare that to the test case with the transaction only committing once:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">postgres=# \\i 1mio_rows_no_pk.sql\nTiming is on.\n autocommit \n------------\n on\n(1 row)\n\nTime: 0.275 ms\nTRUNCATE TABLE\nTime: 16.355 ms\nDO\nTime: 6992.205 ms<\/pre>\n<p>&nbsp;<\/p>\n<p>It makes a difference of around 2,5 seconds. But 2,5 seconds for 1&#8217;000&#8217;001 commits is again not that bad. In his second post Franck continues with various variations of commits. In PostgreSQL a commit is not as much fine grained (at least as far as I know, comments welcome). The most similar behavior is <a href=\"http:\/\/www.postgresql.org\/docs\/9.4\/static\/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\" target=\"_blank\">synchronous_commit<\/a>. So lets give it a try.<br \/>\nNow the test case looks like this:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">\\timing on\nalter system set synchronous_commit='off';\nselect pg_reload_conf();\ntruncate table DEMO;\nDO $$DECLARE\n  l_people_array varchar(15)[12] := '{\"Marc\", \"Bill\", \"George\", \"Eliot\", \"Matt\", \"Trey\", \"Tracy\",\"Greg\", \"Steve\", \"Kristina\", \"Katie\", \"Jeff\"}';\n  n int;\nBEGIN\n  for i in 0..1e6 loop\n     n:=trunc(random()*1000+1);\n     begin\n       insert into DEMO values( i , l_people_array[floor((random()*11))+1::int] , n );\n     exception when others then raise;\n     end;\n  end loop;\nEND$$;\n<\/pre>\n<p>Execute it:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">postgres=# \\i 1mio_rows_no_pk_commit_by_row.sql\nTiming is on.\nALTER SYSTEM\nTime: 12.870 ms\nLOG:  received SIGHUP, reloading configuration files\nLOG:  parameter \"synchronous_commit\" changed to \"off\"\n pg_reload_conf \n----------------\n t\n(1 row)\n\nTime: 5.521 ms\nTRUNCATE TABLE\nTime: 7.898 ms\nDO\nTime: 8861.194 ms<\/pre>\n<p>&nbsp;<\/p>\n<p>Compared to 9,2 seconds from the previous test it makes not that much difference. But this might be dependent on the actual use case and needs to be tested case by case.<br \/>\nLets see what comes next &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Franck was quite fast with his second post Variations on 1M rows insert(2): commit write. Lets see what we can do on the PostgreSQL side. I&#8217;ll take the same test table as Franck again: create table DEMO (&#8220;id&#8221; number , &#8220;text&#8221; varchar2(15), &#8220;number&#8221; number) ; The pgplsql block which corresponds to Frank&#8217;s plsql block looks&hellip;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","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":[83],"tags":[],"class_list":["post-5144","post","type-post","status-publish","format-standard","hentry","category-postgresql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Variations on 1M rows insert(2): commit write - PostgreSQL - 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\/variations-on-1m-rows-insert2-commit-write-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Variations on 1M rows insert(2): commit write - PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"Franck was quite fast with his second post Variations on 1M rows insert(2): commit write. Lets see what we can do on the PostgreSQL side. I&#8217;ll take the same test table as Franck again: create table DEMO (&quot;id&quot; number , &quot;text&quot; varchar2(15), &quot;number&quot; number) ; The pgplsql block which corresponds to Frank&#8217;s plsql block looks&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/\" \/>\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=\"2015-05-04T10:25:54+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif\" \/>\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=\"2 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\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"headline\":\"Variations on 1M rows insert(2): commit write &#8211; PostgreSQL\",\"datePublished\":\"2015-05-04T10:25:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/\"},\"wordCount\":212,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/wwwold.dbi-services.com\\\/plugins\\\/editors\\\/jce\\\/tiny_mce\\\/plugins\\\/article\\\/img\\\/trans.gif\",\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/\",\"name\":\"Variations on 1M rows insert(2): commit write - PostgreSQL - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/wwwold.dbi-services.com\\\/plugins\\\/editors\\\/jce\\\/tiny_mce\\\/plugins\\\/article\\\/img\\\/trans.gif\",\"datePublished\":\"2015-05-04T10:25:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#primaryimage\",\"url\":\"http:\\\/\\\/wwwold.dbi-services.com\\\/plugins\\\/editors\\\/jce\\\/tiny_mce\\\/plugins\\\/article\\\/img\\\/trans.gif\",\"contentUrl\":\"http:\\\/\\\/wwwold.dbi-services.com\\\/plugins\\\/editors\\\/jce\\\/tiny_mce\\\/plugins\\\/article\\\/img\\\/trans.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/variations-on-1m-rows-insert2-commit-write-postgresql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Variations on 1M rows insert(2): commit write &#8211; PostgreSQL\"}]},{\"@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":"Variations on 1M rows insert(2): commit write - PostgreSQL - 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\/variations-on-1m-rows-insert2-commit-write-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"Variations on 1M rows insert(2): commit write - PostgreSQL","og_description":"Franck was quite fast with his second post Variations on 1M rows insert(2): commit write. Lets see what we can do on the PostgreSQL side. I&#8217;ll take the same test table as Franck again: create table DEMO (\"id\" number , \"text\" varchar2(15), \"number\" number) ; The pgplsql block which corresponds to Frank&#8217;s plsql block looks&hellip;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2015-05-04T10:25:54+00:00","og_image":[{"url":"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif","type":"","width":"","height":""}],"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":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"headline":"Variations on 1M rows insert(2): commit write &#8211; PostgreSQL","datePublished":"2015-05-04T10:25:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/"},"wordCount":212,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#primaryimage"},"thumbnailUrl":"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif","articleSection":["PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/","name":"Variations on 1M rows insert(2): commit write - PostgreSQL - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#primaryimage"},"thumbnailUrl":"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif","datePublished":"2015-05-04T10:25:54+00:00","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#primaryimage","url":"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif","contentUrl":"http:\/\/wwwold.dbi-services.com\/plugins\/editors\/jce\/tiny_mce\/plugins\/article\/img\/trans.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/variations-on-1m-rows-insert2-commit-write-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Variations on 1M rows insert(2): commit write &#8211; PostgreSQL"}]},{"@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\/5144","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=5144"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/5144\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=5144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=5144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=5144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}