{"id":27681,"date":"2023-09-08T15:02:55","date_gmt":"2023-09-08T13:02:55","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=27681"},"modified":"2023-09-08T15:02:56","modified_gmt":"2023-09-08T13:02:56","slug":"no-more-snapshot-too-old-in-postgresql-17","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/","title":{"rendered":"No more snapshot too old in PostgreSQL 17"},"content":{"rendered":"\n<p>Currently PostgreSQL has a feature which is called snapshot too old. While each release of PostgreSQL comes with a bunch of new features, sometimes features also get removed. Starting with PostgreSQL 17 there will be most likely no more &#8220;snapshot too old&#8221;. Before looking at why that got removed lets first have a look at what it is.<\/p>\n\n\n\n<p>The main goal of this feature was to reduce table bloat and it is very well described in the <a href=\"https:\/\/www.postgresql.org\/docs\/16\/runtime-config-resource.html#GUC-OLD-SNAPSHOT-THRESHOLD\" target=\"_blank\" rel=\"noreferrer noopener\">documentation<\/a>.<\/p>\n\n\n\n<p>By default this feature is disabled:<\/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 16beta3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit\n(1 row)\n\npostgres=# \\dconfig *snapshot*\nList of configuration parameters\n       Parameter        | Value \n------------------------+-------\n old_snapshot_threshold | -1\n(1 row)\n<\/pre><\/div>\n\n\n<p>To see this is in action we can do the following: Enable the feature by setting it to one minute:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,7,9,16,22,27]; title: ; notranslate\" title=\"\">\npostgres=# select context from pg_settings where name = &#039;old_snapshot_threshold&#039;;\n  context   \n------------\n postmaster\n(1 row)\n\npostgres=# alter system set old_snapshot_threshold = 1;\nALTER SYSTEM\npostgres=# \\! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2023-09-08 11:58:10.718 CEST - 1 - 15692 -  - @ - 0LOG:  redirecting log output to logging collector process\n2023-09-08 11:58:10.718 CEST - 2 - 15692 -  - @ - 0HINT:  Future log output will appear in directory &quot;pg_log&quot;.\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select 1;\n ?column? \n----------\n        1\n(1 row)\npostgres=# show old_snapshot_threshold ;\n old_snapshot_threshold \n------------------------\n 1min\n(1 row)\n\npostgres=# \n<\/pre><\/div>\n\n\n<p>We&#8217;ve set old_snapshot_threshold to 1 minute and now we can easily produce a snapshot too old error. The procedure is:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a table in the first session<\/li>\n\n\n\n<li>Start a transaction in a second session and select from that table<\/li>\n\n\n\n<li>Insert, update and delete all data from the table in the first session. The transaction in the second session started before all that so it will never see any rows as everything is gone, but not committed<\/li>\n\n\n\n<li>In a third session do a vacuum short before 1min passed (you can use <a href=\"https:\/\/www.postgresql.org\/docs\/current\/functions-datetime.html#FUNCTIONS-DATETIME-DELAY\" target=\"_blank\" rel=\"noreferrer noopener\">pg_sleep<\/a> to add a delay)<\/li>\n\n\n\n<li>In the second session also add some delay and then select from the table<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [2,6,8,14,16,18,20,22,26,29,35,36]; title: ; notranslate\" title=\"\">\n-- session 1\npostgres=# create table t ( a int );\nCREATE TABLE\n\n-- session 2\npostgres=# begin transaction isolation level repeatable read ;\nBEGIN\npostgres=*# select * from t;\n a \n---\n(0 rows)\n\n-- session 1\npostgres=# begin;\nBEGIN\npostgres=*# insert into t select * from generate_series(1,1000);\nINSERT 0 1000\npostgres=*# update t set a = 3;\nUPDATE 1000\npostgres=*# delete from t;\nDELETE 1000\npostgres=*# commit;\nCOMMIT\n\n-- session 3\npostgres=# select pg_sleep(50); vacuum t;\n\n-- session 2\npostgres=*# select pg_sleep(50);\n pg_sleep \n----------\n \n(1 row)\n\npostgres=*# select * from t;\nERROR:  snapshot too old\npostgres=!# \n<\/pre><\/div>\n\n\n<p>This means vacuum already did the cleanup of those rows and this triggers the &#8220;snapshot too old&#8221; error. This was mean as a last defense for long running transaction or reporting queries. From PostgreSQL 17 on, this is not anymore possible. The commit message has all the details and links to the discussions around this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nRemove the &quot;snapshot too old&quot; feature.\n\nRemove the old_snapshot_threshold setting and mechanism for producing\nthe error &quot;snapshot too old&quot;, originally added by commit 848ef42b.\nUnfortunately it had a number of known problems in terms of correctness\nand performance, mostly reported by Andres in the course of his work on\nsnapshot scalability.  We agreed to remove it, after a long period\nwithout an active plan to fix it.\n\nThis is certainly a desirable feature, and someone might propose a new\nor improved implementation in the future.\n\nReported-by: Andres Freund &amp;lt;andres@anarazel.de&amp;gt;\nDiscussion: https:\/\/postgr.es\/m\/CACG%3DezYV%2BEvO135fLRdVn-ZusfVsTY6cH1OZqWtezuEYH6ciQA%40mail.gmail.com\nDiscussion: https:\/\/postgr.es\/m\/20200401064008.qob7bfnnbu4w5cw4%40alap3.anarazel.de\nDiscussion: https:\/\/postgr.es\/m\/CA%2BTgmoY%3Daqf0zjTD%2B3dUWYkgMiNDegDLFjo%2B6ze%3DWtpik%2B3XqA%40mail.gmail.com\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Currently PostgreSQL has a feature which is called snapshot too old. While each release of PostgreSQL comes with a bunch of new features, sometimes features also get removed. Starting with PostgreSQL 17 there will be most likely no more &#8220;snapshot too old&#8221;. Before looking at why that got removed lets first have a look at [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[77],"type_dbi":[],"class_list":["post-27681","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.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>No more snapshot too old in PostgreSQL 17 - 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\/no-more-snapshot-too-old-in-postgresql-17\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"No more snapshot too old in PostgreSQL 17\" \/>\n<meta property=\"og:description\" content=\"Currently PostgreSQL has a feature which is called snapshot too old. While each release of PostgreSQL comes with a bunch of new features, sometimes features also get removed. Starting with PostgreSQL 17 there will be most likely no more &#8220;snapshot too old&#8221;. Before looking at why that got removed lets first have a look at [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-08T13:02:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-08T13:02:56+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=\"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\\\/no-more-snapshot-too-old-in-postgresql-17\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"No more snapshot too old in PostgreSQL 17\",\"datePublished\":\"2023-09-08T13:02:55+00:00\",\"dateModified\":\"2023-09-08T13:02:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/\"},\"wordCount\":276,\"commentCount\":6,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/\",\"name\":\"No more snapshot too old in PostgreSQL 17 - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2023-09-08T13:02:55+00:00\",\"dateModified\":\"2023-09-08T13:02:56+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/no-more-snapshot-too-old-in-postgresql-17\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"No more snapshot too old in PostgreSQL 17\"}]},{\"@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":"No more snapshot too old in PostgreSQL 17 - 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\/no-more-snapshot-too-old-in-postgresql-17\/","og_locale":"en_US","og_type":"article","og_title":"No more snapshot too old in PostgreSQL 17","og_description":"Currently PostgreSQL has a feature which is called snapshot too old. While each release of PostgreSQL comes with a bunch of new features, sometimes features also get removed. Starting with PostgreSQL 17 there will be most likely no more &#8220;snapshot too old&#8221;. Before looking at why that got removed lets first have a look at [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/","og_site_name":"dbi Blog","article_published_time":"2023-09-08T13:02:55+00:00","article_modified_time":"2023-09-08T13:02:56+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"No more snapshot too old in PostgreSQL 17","datePublished":"2023-09-08T13:02:55+00:00","dateModified":"2023-09-08T13:02:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/"},"wordCount":276,"commentCount":6,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/","url":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/","name":"No more snapshot too old in PostgreSQL 17 - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2023-09-08T13:02:55+00:00","dateModified":"2023-09-08T13:02:56+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/no-more-snapshot-too-old-in-postgresql-17\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"No more snapshot too old in PostgreSQL 17"}]},{"@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\/27681","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=27681"}],"version-history":[{"count":19,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/27681\/revisions"}],"predecessor-version":[{"id":28266,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/27681\/revisions\/28266"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=27681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=27681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=27681"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=27681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}