{"id":1805,"date":"2021-04-10T13:21:54","date_gmt":"2021-04-10T13:21:54","guid":{"rendered":"https:\/\/gauravw.com\/blog\/?p=1805"},"modified":"2021-04-10T13:27:26","modified_gmt":"2021-04-10T13:27:26","slug":"write-amplification-application-db-ssd","status":"publish","type":"post","link":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/","title":{"rendered":"Write Amplification &#8211; Application, DB, SSD"},"content":{"rendered":"<p><strong>Application Write Amplification<\/strong><\/p>\n\n\n\n<p>It&#8217;s a single operation on the front-end \u2013 let&#8217;s say -&gt; mark a task completed. This may translate to multiple things on the backend. It would<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>change the status to completed<\/li><li>based on the status completion \u2013 another task needs to be marked completed<\/li><li>update a log table for maintaining history <br>So essentially, one operation causes multiple on the backend.<\/li><\/ol>\n\n\n\n<p><strong>DB Write Amplification<\/strong><\/p>\n\n\n\n<p>A db row updation would case<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>changing values into the table<\/li><li>changing values into the index. Now there could be multiple indexes and all may or may not need to be updated depending on the scenario, what you are updating and which DB system you are using.<br>So essentially, one operation causes multiple on the backend.<\/li><\/ol>\n\n\n\n<p><strong>SSD Write Amplification<\/strong><\/p>\n\n\n\n<p>SSDs work in a different way.  We write to them pages which are stored in blocks.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/6\/66\/Garbage_Collection.png\" alt=\"\"\/><figcaption>SSD Writes<\/figcaption><\/figure>\n\n\n\n<p>As one can see the entire data is moved from one block to the other in garbage collection. The updates are bad for the SSD as it invalidates the pages and it needs to be written again. So with a structure like B+ tree where trees need to be balanced and nodes updated, it can cause several blocks to be written. This is why <strong>append logs<\/strong> came into the scenario as they are SSD friendly as they don\u2019t update but just write new things.<\/p>\n\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-1805\" data-postid=\"1805\" class=\"themify_builder_content themify_builder_content-1805 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n\n\n<p> <\/p>","protected":false},"excerpt":{"rendered":"<p>Application Write Amplification It&#8217;s a single operation on the front-end \u2013 let&#8217;s say -&gt; mark a task completed. This may translate to multiple things on the backend. It would change the status to completed based on the status completion \u2013 another task needs to be marked completed update a log table for maintaining history So [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1806,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[97],"tags":[],"class_list":["post-1805","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-learnings","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Write Amplification - Application, DB, SSD &#187; Gaurav Wadhwani<\/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:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Write Amplification - Application, DB, SSD &#187; Gaurav Wadhwani\" \/>\n<meta property=\"og:description\" content=\"Application Write Amplification It&#8217;s a single operation on the front-end \u2013 let&#8217;s say -&gt; mark a task completed. This may translate to multiple things on the backend. It would change the status to completed based on the status completion \u2013 another task needs to be marked completed update a log table for maintaining history So [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\" \/>\n<meta property=\"og:site_name\" content=\"Gaurav Wadhwani\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-10T13:21:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-10T13:27:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png\" \/>\n\t<meta property=\"og:image:width\" content=\"883\" \/>\n\t<meta property=\"og:image:height\" content=\"625\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Gaurav Wadhwani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gaurav Wadhwani\" \/>\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:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\"},\"author\":{\"name\":\"Gaurav Wadhwani\",\"@id\":\"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e\"},\"headline\":\"Write Amplification &#8211; Application, DB, SSD\",\"datePublished\":\"2021-04-10T13:21:54+00:00\",\"dateModified\":\"2021-04-10T13:27:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\"},\"wordCount\":233,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e\"},\"image\":{\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png\",\"articleSection\":[\"Tech Learnings\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\",\"url\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\",\"name\":\"Write Amplification - Application, DB, SSD &#187; Gaurav Wadhwani\",\"isPartOf\":{\"@id\":\"https:\/\/gauravw.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png\",\"datePublished\":\"2021-04-10T13:21:54+00:00\",\"dateModified\":\"2021-04-10T13:27:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage\",\"url\":\"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png\",\"contentUrl\":\"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png\",\"width\":883,\"height\":625,\"caption\":\"Garbage_Collection SSD\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/gauravw.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Write Amplification &#8211; Application, DB, SSD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/gauravw.com\/blog\/#website\",\"url\":\"https:\/\/gauravw.com\/blog\/\",\"name\":\"Gaurav Wadhwani\",\"description\":\"Where I write \/ scribble\",\"publisher\":{\"@id\":\"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/gauravw.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e\",\"name\":\"Gaurav Wadhwani\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gauravw.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/88929454012064ffbe95370287faa36b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/88929454012064ffbe95370287faa36b?s=96&d=mm&r=g\",\"caption\":\"Gaurav Wadhwani\"},\"logo\":{\"@id\":\"https:\/\/gauravw.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/gauravw.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Write Amplification - Application, DB, SSD &#187; Gaurav Wadhwani","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:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/","og_locale":"en_US","og_type":"article","og_title":"Write Amplification - Application, DB, SSD &#187; Gaurav Wadhwani","og_description":"Application Write Amplification It&#8217;s a single operation on the front-end \u2013 let&#8217;s say -&gt; mark a task completed. This may translate to multiple things on the backend. It would change the status to completed based on the status completion \u2013 another task needs to be marked completed update a log table for maintaining history So [&hellip;]","og_url":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/","og_site_name":"Gaurav Wadhwani","article_published_time":"2021-04-10T13:21:54+00:00","article_modified_time":"2021-04-10T13:27:26+00:00","og_image":[{"width":883,"height":625,"url":"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png","type":"image\/png"}],"author":"Gaurav Wadhwani","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Gaurav Wadhwani","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#article","isPartOf":{"@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/"},"author":{"name":"Gaurav Wadhwani","@id":"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e"},"headline":"Write Amplification &#8211; Application, DB, SSD","datePublished":"2021-04-10T13:21:54+00:00","dateModified":"2021-04-10T13:27:26+00:00","mainEntityOfPage":{"@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/"},"wordCount":233,"commentCount":0,"publisher":{"@id":"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e"},"image":{"@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage"},"thumbnailUrl":"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png","articleSection":["Tech Learnings"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/","url":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/","name":"Write Amplification - Application, DB, SSD &#187; Gaurav Wadhwani","isPartOf":{"@id":"https:\/\/gauravw.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage"},"image":{"@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage"},"thumbnailUrl":"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png","datePublished":"2021-04-10T13:21:54+00:00","dateModified":"2021-04-10T13:27:26+00:00","breadcrumb":{"@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#primaryimage","url":"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png","contentUrl":"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png","width":883,"height":625,"caption":"Garbage_Collection SSD"},{"@type":"BreadcrumbList","@id":"https:\/\/gauravw.com\/blog\/2021\/04\/write-amplification-application-db-ssd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gauravw.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Write Amplification &#8211; Application, DB, SSD"}]},{"@type":"WebSite","@id":"https:\/\/gauravw.com\/blog\/#website","url":"https:\/\/gauravw.com\/blog\/","name":"Gaurav Wadhwani","description":"Where I write \/ scribble","publisher":{"@id":"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gauravw.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/gauravw.com\/blog\/#\/schema\/person\/9a05a9c3487f35f6b4577c6956cf252e","name":"Gaurav Wadhwani","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gauravw.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/88929454012064ffbe95370287faa36b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/88929454012064ffbe95370287faa36b?s=96&d=mm&r=g","caption":"Gaurav Wadhwani"},"logo":{"@id":"https:\/\/gauravw.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/gauravw.com"]}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/gauravw.com\/blog\/wp-content\/uploads\/2021\/04\/Garbage_Collection.png","builder_content":"","_links":{"self":[{"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/posts\/1805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/comments?post=1805"}],"version-history":[{"count":2,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/posts\/1805\/revisions"}],"predecessor-version":[{"id":1809,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/posts\/1805\/revisions\/1809"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/media\/1806"}],"wp:attachment":[{"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/media?parent=1805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/categories?post=1805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gauravw.com\/blog\/wp-json\/wp\/v2\/tags?post=1805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}