{"id":19083,"date":"2022-09-21T10:51:42","date_gmt":"2022-09-21T08:51:42","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=19083"},"modified":"2022-09-21T10:51:42","modified_gmt":"2022-09-21T08:51:42","slug":"toasting-in-postgresql-toast-tables","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/","title":{"rendered":"TOASTing in PostgreSQL, TOAST tables"},"content":{"rendered":"<p>Make sure that you read the <a href=\"https:\/\/www.dbi-services.com\/blog\/toasting-strategies-in-postgresql\/\" target=\"_blank\" rel=\"noopener\">last post about TOASTing strategies in PostgreSQL<\/a> before you continue with this one, at least if you are not familiar with the previous topic. The strategies we looked at are one important implementation detail you need to be aware of when it comes to TOASTing. What we didn&#8217;t look at until know, is how TOASTing actually works and where the data is going, when it is moved out of the main table.<\/p>\n<p>Let&#8217;s start with a small table:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# create table t ( a int, b text );\nCREATE TABLE\npostgres=# select attname, atttypid::regtype,attcompression,\n                  case attstorage when 'p' then 'plain'\n                                  when 'e' then 'external'\n                                  when 'm' then 'main'\n                                  when 'x' then 'extended'\n                  end AS strategy\n             from pg_attribute\n            where attrelid = 't'::regclass and attnum &gt; 0;\n attname | atttypid | attcompression | strategy \n---------+----------+----------------+----------\n a       | integer  |                | plain\n b       | text     |                | extended\n(2 rows)\n<\/pre>\n<p>We already know that column &#8220;a&#8221; can potentially be compressed and column &#8220;b&#8221; can potentially be compressed and moved out of line. PostgreSQL, because column &#8220;b&#8221; might contain data that must be moved out of the main table, already created a TOAST table in the background. If you don&#8217;t know this, you probably will never notice this, as it happens transparently. The questions is, where was that table created and how can you have a look at it? It definitely was not created in the same schema as the table, because we do not see it:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# \\d\n        List of relations\n Schema | Name | Type  |  Owner   \n--------+------+-------+----------\n public | t    | table | postgres\n(1 row)\n<\/pre>\n<p>TOAST tables go into a special called &#8220;pg_toast&#8221; and you&#8217;ll notice that already are plenty of other TOAST tables and indexes:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# \\dnS\n            List of schemas\n        Name        |       Owner       \n--------------------+-------------------\n information_schema | postgres\n pg_catalog         | postgres\n pg_toast           | postgres\n public             | pg_database_owner\n(4 rows)\npostgres=# \\d pg_toast.pg_toast_\npg_toast.pg_toast_1213         pg_toast.pg_toast_1418_index   pg_toast.pg_toast_2619         pg_toast.pg_toast_3456_index\npg_toast.pg_toast_1213_index   pg_toast.pg_toast_16418        pg_toast.pg_toast_2619_index   pg_toast.pg_toast_3466\npg_toast.pg_toast_1247         pg_toast.pg_toast_16418_index  pg_toast.pg_toast_2620         pg_toast.pg_toast_3466_index\npg_toast.pg_toast_1247_index   pg_toast.pg_toast_2328         pg_toast.pg_toast_2620_index   pg_toast.pg_toast_3592\npg_toast.pg_toast_1255         pg_toast.pg_toast_2328_index   pg_toast.pg_toast_2964         pg_toast.pg_toast_3592_index\npg_toast.pg_toast_1255_index   pg_toast.pg_toast_2396         pg_toast.pg_toast_2964_index   pg_toast.pg_toast_3596\npg_toast.pg_toast_1260         pg_toast.pg_toast_2396_index   pg_toast.pg_toast_3079         pg_toast.pg_toast_3596_index\npg_toast.pg_toast_1260_index   pg_toast.pg_toast_2600         pg_toast.pg_toast_3079_index   pg_toast.pg_toast_3600\npg_toast.pg_toast_1262         pg_toast.pg_toast_2600_index   pg_toast.pg_toast_3118         pg_toast.pg_toast_3600_index\npg_toast.pg_toast_1262_index   pg_toast.pg_toast_2604         pg_toast.pg_toast_3118_index   pg_toast.pg_toast_6000\npg_toast.pg_toast_13378        pg_toast.pg_toast_2604_index   pg_toast.pg_toast_3256         pg_toast.pg_toast_6000_index\npg_toast.pg_toast_13378_index  pg_toast.pg_toast_2606         pg_toast.pg_toast_3256_index   pg_toast.pg_toast_6100\npg_toast.pg_toast_13383        pg_toast.pg_toast_2606_index   pg_toast.pg_toast_3350         pg_toast.pg_toast_6100_index\npg_toast.pg_toast_13383_index  pg_toast.pg_toast_2609         pg_toast.pg_toast_3350_index   pg_toast.pg_toast_6106\npg_toast.pg_toast_13388        pg_toast.pg_toast_2609_index   pg_toast.pg_toast_3381         pg_toast.pg_toast_6106_index\npg_toast.pg_toast_13388_index  pg_toast.pg_toast_2612         pg_toast.pg_toast_3381_index   pg_toast.pg_toast_6243\npg_toast.pg_toast_13393        pg_toast.pg_toast_2612_index   pg_toast.pg_toast_3394         pg_toast.pg_toast_6243_index\npg_toast.pg_toast_13393_index  pg_toast.pg_toast_2615         pg_toast.pg_toast_3394_index   pg_toast.pg_toast_826\npg_toast.pg_toast_1417         pg_toast.pg_toast_2615_index   pg_toast.pg_toast_3429         pg_toast.pg_toast_826_index\n<\/pre>\n<p>It seems all are named &#8220;pg_toast_&#8221; followed by the OID of the table the TOAST table if for:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# select oid from pg_class where relname = 't';\n  oid  \n-------\n 16418\n(1 row)\n\npostgres=# \\d pg_toast.pg_toast_16418\nTOAST table \"pg_toast.pg_toast_16418\"\n   Column   |  Type   \n------------+---------\n chunk_id   | oid\n chunk_seq  | integer\n chunk_data | bytea\nOwning table: \"public.t\"\nIndexes:\n    \"pg_toast_16418_index\" PRIMARY KEY, btree (chunk_id, chunk_seq)\n<\/pre>\n<p>Be careful with this approach to identify a TOAST table, the OID of a table can change. The correct way for identifying a TOAST table is to ask <a href=\"https:\/\/www.postgresql.org\/docs\/current\/catalog-pg-class.html\" target=\"_blank\" rel=\"noopener\">pg_class<\/a>:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# select relname,reltoastrelid::regclass \n             from pg_class\n            where relname = 't'; \\gset\n relname |      reltoastrelid      \n---------+-------------------------\n t       | pg_toast.pg_toast_16418\n(1 row)\n<\/pre>\n<p>Back to the structure of TOAST tables:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=# \\d :reltoastrelid\nTOAST table \"pg_toast.pg_toast_16418\"\n   Column   |  Type   \n------------+---------\n chunk_id   | oid\n chunk_seq  | integer\n chunk_data | bytea\nOwning table: \"public.t\"\nIndexes:\n    \"pg_toast_16418_index\" PRIMARY KEY, btree (chunk_id, chunk_seq)\n<\/pre>\n<p>The primary key (chunk_id, chunk_seq) is always used by PostgreSQL to access the data. To be more precise the primary key is used to retrieve the &#8220;chunks&#8221; of data which are stored in binary format in a <a href=\"https:\/\/www.postgresql.org\/docs\/current\/datatype-binary.html\" target=\"_blank\" rel=\"noopener\">bytea<\/a> column and the main table contains a pointer to the chunk_id. This absolutely makes sense, as data is either compressed before it is moved out of line or the data anyway is already in binary format. What PostgreSQL is doing with large data is, it slices the data in smaller &#8220;chunks&#8221;, and these chunks go into the TOAST table. This keeps the main table small, and as long as you do not ask for the data which is TOASTed, there is no need to go to the TOAST table. This should already tell you, that you should avoid &#8220;select *&#8221; against tables which contain TOASTed data, even better, avoid &#8220;select *&#8221; at all.<\/p>\n<p>That&#8217;s it for today. In the next post we&#8217;ll go into more details how TOASTing works internally.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Make sure that you read the last post about TOASTing strategies in PostgreSQL before you continue with this one, at least if you are not familiar with the previous topic. The strategies we looked at are one important implementation detail you need to be aware of when it comes to TOASTing. What we didn&#8217;t look&hellip;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"closed","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-19083","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>TOASTing in PostgreSQL, TOAST tables - 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\/toasting-in-postgresql-toast-tables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TOASTing in PostgreSQL, TOAST tables\" \/>\n<meta property=\"og:description\" content=\"Make sure that you read the last post about TOASTing strategies in PostgreSQL before you continue with this one, at least if you are not familiar with the previous topic. The strategies we looked at are one important implementation detail you need to be aware of when it comes to TOASTing. What we didn&#8217;t look&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/\" \/>\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=\"2022-09-21T08:51:42+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=\"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\\\/toasting-in-postgresql-toast-tables\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"headline\":\"TOASTing in PostgreSQL, TOAST tables\",\"datePublished\":\"2022-09-21T08:51:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/\"},\"wordCount\":438,\"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\\\/toasting-in-postgresql-toast-tables\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/\",\"name\":\"TOASTing in PostgreSQL, TOAST tables - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2022-09-21T08:51:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/toasting-in-postgresql-toast-tables\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TOASTing in PostgreSQL, TOAST tables\"}]},{\"@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":"TOASTing in PostgreSQL, TOAST tables - 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\/toasting-in-postgresql-toast-tables\/","og_locale":"en_US","og_type":"article","og_title":"TOASTing in PostgreSQL, TOAST tables","og_description":"Make sure that you read the last post about TOASTing strategies in PostgreSQL before you continue with this one, at least if you are not familiar with the previous topic. The strategies we looked at are one important implementation detail you need to be aware of when it comes to TOASTing. What we didn&#8217;t look&hellip;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2022-09-21T08:51:42+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":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"headline":"TOASTing in PostgreSQL, TOAST tables","datePublished":"2022-09-21T08:51:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/"},"wordCount":438,"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\/toasting-in-postgresql-toast-tables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/","url":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/","name":"TOASTing in PostgreSQL, TOAST tables - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2022-09-21T08:51:42+00:00","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/toasting-in-postgresql-toast-tables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TOASTing in PostgreSQL, TOAST tables"}]},{"@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\/19083","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=19083"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/19083\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=19083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=19083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=19083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}