{"id":4501,"date":"2017-11-20T18:24:43","date_gmt":"2017-11-20T17:24:43","guid":{"rendered":"http:\/\/andreas-wolter.com\/?p=4501"},"modified":"2018-10-03T19:15:39","modified_gmt":"2018-10-03T18:15:39","slug":"1711_optimal-cluster-sizes-for-sql-server-on-ssds","status":"publish","type":"post","link":"https:\/\/andreas-wolter.com\/en\/1711_optimal-cluster-sizes-for-sql-server-on-ssds\/","title":{"rendered":"Optimal Cluster sizes for SQL Server on SSDs &#8211; are 64K still important?"},"content":{"rendered":"\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-av_heading-d0779fda1d83ded296aafcb5092ea674\">\n#top .av-special-heading.av-av_heading-d0779fda1d83ded296aafcb5092ea674{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-av_heading-d0779fda1d83ded296aafcb5092ea674 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-av_heading-d0779fda1d83ded296aafcb5092ea674 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-av_heading-d0779fda1d83ded296aafcb5092ea674 av-special-heading-h3 blockquote modern-quote  avia-builder-el-0  el_before_av_textblock  avia-builder-el-first '><h3 class='av-special-heading-tag'  itemprop=\"headline\"  >Optimal Cluster sizes for SQL Server on SSDs<\/h3><div class='av-subheading av-subheading_below'><p>&#8211; are 64K still important?<\/p>\n<\/div><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><p>Lately, with the advance of SSDs, more and more administrators are wondering: <strong>Is the old rule to use a 64K Cluster size (aka \u201cFile Allocation Unit size\u201d) for SQL Server still applicable on today\u2019s hard drives, especially SSDs or even Flash? <\/strong>And:<strong> Does it apply to all RAID-types equally?<\/strong> This summer I took some time to conduct some <strong>IO benchmarks on SSDs<\/strong> under different RAID configurations (RAID 0, RAID 10, RAID 50), of\u00a0which I am now finally finding the time to share the results.<!--more--><\/p>\n<p><strong>First things first:<\/strong> Whenever you get recommendations from the internet, it is very unlikely that your system is configured identically. The drives I tested were <a href=\"https:\/\/www.hgst.com\/products\/solid-state-solutions\/ultrastar-ssd800mhb\" target=\"_blank\" rel=\"noopener\"><strong><em>HGST<\/em><\/strong><strong> Ultrastar SSD800MH.B<\/strong><\/a> Enterprise MLC 12Gb\/s SAS Solid-State Drives (HGST is subsidiary of <em>Western Digital<\/em>).<\/p>\n<p><em>At this point a big <strong>Thank You to <\/strong><\/em><a href=\"http:\/\/www.deutschebahn.com\/de\/konzern\/Konzernunternehmen\/11877762\/dbnetzag.html\" target=\"_blank\" rel=\"noopener\"><strong><em>DB Netz AG<\/em><\/strong><\/a><em> that graciously allowed me to use their brand-new hardware for those tests.)<\/em><\/p>\n<p>Ideally you are able to do your own benchmarks. But if you don\u2019t find time, this will hopefully help many.<\/p>\n<p><strong>The Setup:<\/strong><\/p>\n<p>I was lucky to have 46 of those SSDs, shared equally (2&#215;23) among the 2 HBAs in the server (4x Intel E7-8891 v3 \u00e0 10 cores, 20 threads, 2TB RAM) and thus was able to prepare <strong>6 volumes<\/strong> with the following RAID-configuration all at once, before the actual IO tests. The IO tests of course were performed sequentially. The bullet points are using the drive letters from the test Server:<\/p>\n<\/div><\/section>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><p>(N)<strong> RAID 10<\/strong> consisting of <strong>4 disks<\/strong><\/p>\n<p style=\"padding-left: 30px;\">mirrored via Storage Pools and then striped via Volume Management.<\/p>\n<p>(O)<strong> RAID 10<\/strong> consisting of <strong>6 disks<\/strong><\/p>\n<p>(M)<strong> RAID 10<\/strong> consisting of <strong>10 disks<\/strong><\/p>\n<p>(T)<strong> RAID 0<\/strong> (Stripe Set) consisting of <strong>4 disks<\/strong><\/p>\n<p style=\"padding-left: 30px;\">striped via Storage Pools<\/p>\n<p>(S)<strong> RAID 0<\/strong> (Stripe Set) consisting of <strong>4 disks<\/strong><\/p>\n<p style=\"padding-left: 30px;\">striped via Storage Pools and striped again via Volume Management.<\/p>\n<p>(R)<strong> RAID 50<\/strong> consisting of <strong>6 disks<\/strong> (2&#215;3)<\/p>\n<\/div><\/section>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><p>All of the volumes were formatted and tested with a <strong>Cluster size of 4 <\/strong>and<strong> 64 K <\/strong>after another. Also, some tests on <strong>8 K<\/strong> Cluster size were made.<\/p>\n<p>This is how the final volumes looked like in the Server:<\/p>\n<\/div><\/section>\r\n\r\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-av_image-dcc743b819ba5582ecc1905684cccc57\">\n.avia-image-container.av-av_image-dcc743b819ba5582ecc1905684cccc57 img.avia_image{\nbox-shadow:none;\n}\n.avia-image-container.av-av_image-dcc743b819ba5582ecc1905684cccc57 .av-image-caption-overlay-center{\ncolor:#ffffff;\n}\n<\/style>\n<div  class='avia-image-container av-av_image-dcc743b819ba5582ecc1905684cccc57 av-styling- avia-align-center  avia-builder-el-4  el_after_av_textblock  el_before_av_textblock '   itemprop=\"image\" itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/ImageObject\" ><div class=\"avia-image-container-inner\"><div class=\"avia-image-overlay-wrap\"><img decoding=\"async\" class='wp-image-4509 avia-img-lazy-loading-not-4509 avia_image ' src=\"https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/Final_volumes.png\" alt='' title='Final_volumes'  height=\"258\" width=\"544\"  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/Final_volumes.png 544w, https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/Final_volumes-300x142.png 300w, https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/Final_volumes-450x213.png 450w\" sizes=\"(max-width: 544px) 100vw, 544px\" \/><\/div><\/div><\/div>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><p>(The final setup of course would be just two or 3, larger, volumes, not that many.)<\/p>\n<p><strong>The IO Tests<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/Microsoft\/diskspd\" target=\"_blank\" rel=\"noopener\">Diskspd<\/a> was used for the load-testing, and the following <strong>6 IO-Test-configurations<\/strong> were used for all tests:<\/p>\n<\/div><\/section>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><table width=\"448\">\n<tbody>\n<tr>\n<td width=\"84\">Name<\/td>\n<td width=\"40\">Path<\/td>\n<td width=\"60\">Block size<\/td>\n<td width=\"66\">Operation<\/td>\n<td width=\"61\">Read \/ Write<\/td>\n<td width=\"75\">Outstanding IO<\/td>\n<td width=\"62\">Threads<\/td>\n<\/tr>\n<tr>\n<td width=\"84\">Read Random 8K<\/td>\n<td width=\"40\">M:\\<\/td>\n<td width=\"60\">8K<\/td>\n<td width=\"66\">Random<\/td>\n<td width=\"61\">100% Read<\/td>\n<td width=\"75\">8<\/td>\n<td width=\"62\">8<\/td>\n<\/tr>\n<tr>\n<td width=\"84\">Read Random 64K<\/td>\n<td width=\"40\">M:\\<\/td>\n<td width=\"60\">64K<\/td>\n<td width=\"66\">Random<\/td>\n<td width=\"61\">100% Read<\/td>\n<td width=\"75\">8<\/td>\n<td width=\"62\">8<\/td>\n<\/tr>\n<tr>\n<td width=\"84\">Write Random 8K<\/td>\n<td width=\"40\">M:\\<\/td>\n<td width=\"60\">8K<\/td>\n<td width=\"66\">Random<\/td>\n<td width=\"61\">100% Write<\/td>\n<td width=\"75\">8<\/td>\n<td width=\"62\">8<\/td>\n<\/tr>\n<tr>\n<td width=\"84\">Read sequential 64K<\/td>\n<td width=\"40\">M:\\<\/td>\n<td width=\"60\">64K<\/td>\n<td width=\"66\">Sequential<\/td>\n<td width=\"61\">100% Read<\/td>\n<td width=\"75\">8<\/td>\n<td width=\"62\">8<\/td>\n<\/tr>\n<tr>\n<td width=\"84\">Write sequential 8K<\/td>\n<td width=\"40\">M:\\<\/td>\n<td width=\"60\">8K<\/td>\n<td width=\"66\">Sequential<\/td>\n<td width=\"61\">100% Write<\/td>\n<td width=\"75\">8<\/td>\n<td width=\"62\">8<\/td>\n<\/tr>\n<tr>\n<td width=\"84\">Read sequential 256K<\/td>\n<td width=\"40\">M:\\<\/td>\n<td width=\"60\">256K<\/td>\n<td width=\"66\">Sequential<\/td>\n<td width=\"61\">100% Read<\/td>\n<td width=\"75\">8<\/td>\n<td width=\"62\">8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div><\/section>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><p>Not all drive configurations were tested thoroughly with 8 K Cluster size, as I realized that the differences to 64 K were often neglectable.<\/p>\n<p><strong>The Results<\/strong><\/p>\n<p>The tests yielded some unexpected results, and on the other hand some less clear differences than expected.<br \/>\nMy tests show the following:<\/p>\n<\/div><\/section>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><ol>\n<li><strong>64 K Cluster Size<br \/>\na. <\/strong><strong>performs better<\/strong> for Almost all Raid-Configurations + Workloads<br \/>\n<strong>Exceptions<\/strong>:<\/p>\n<ol>\n<li>\u00a0Raid50\n<ol>\n<li>8K Random Reads remarkably bad (8 and even 4 K Cluster size performs better here) \u2013 this does not apply to 8 K Random Writes though, where 8 and 64 K Cluster both perform (equally) better<\/li>\n<li>Read Random 64K<\/li>\n<li>Read sequential 64K<\/li>\n<li>8K Sequential writes no differences -> for OLTP Pattern 8 K might be better (4K not generally)<\/li>\n<\/ol>\n<\/li>\n<li>Raid10 with 4 Disks: no relevant difference<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<ol>\n<li style=\"list-style-type: none;\"><\/li>\n<li><b><strong>8 K Cluster Size <\/strong>performance is almost the same as for 64 K<\/b><\/li>\n<li><strong>4 K Cluster Size<\/strong> performs better for Random 8K Reads in RAID 50 only<\/li>\n<li>Raid 10 of 10 disks is substantially faster for 64K <u>Random<\/u> Reads than <u>Sequential<\/u> Reads! \u2013 Boost after 6 disks. For Sequential reads and random writes, no significant differences were measured.<\/li>\n<li>The Stripe Sets do NOT outperform the other RAID configurations. They are only substantially faster for Writes (Write Random 8K) than Raid10. For Reads they are sometimes even a bit slower than Raid10 or Raid 50.<br \/>\n<strong>a. This debunks the myth that a Stripe Set outperforms a real redundant Raid by nature!<\/strong><\/li>\n<li>Raid50 6 disks, net \u00a02.89TB, is much faster than a Raid10 of 6 disks, net 2.16 TB.<\/li>\n<li>A Stripe set (4 disks) constructed solely via Storage Pool is faster than a Stripe Set constructed via StoragePool <u>and<\/u> Volume Management.<br \/>\na. Except for 4 K results!<\/li>\n<\/ol>\n<\/div><\/section>\r\n\r\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-av_image-9ffa147dcd10b60ee2d5c3c0a71a8666\">\n.avia-image-container.av-av_image-9ffa147dcd10b60ee2d5c3c0a71a8666 img.avia_image{\nbox-shadow:none;\n}\n.avia-image-container.av-av_image-9ffa147dcd10b60ee2d5c3c0a71a8666 .av-image-caption-overlay-center{\ncolor:#ffffff;\n}\n<\/style>\n<div  class='avia-image-container av-av_image-9ffa147dcd10b60ee2d5c3c0a71a8666 av-styling- avia-align-center  avia-builder-el-9  el_after_av_textblock  el_before_av_textblock '   itemprop=\"image\" itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/ImageObject\" ><div class=\"avia-image-container-inner\"><div class=\"avia-image-overlay-wrap\"><img decoding=\"async\" class='wp-image-4603 avia-img-lazy-loading-not-4603 avia_image ' src=\"https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results.png\" alt='' title='1711_Disk-Benchmark-Results'  height=\"343\" width=\"741\"  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results.png 741w, https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results-600x278.png 600w, https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results-300x139.png 300w, https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results-705x326.png 705w, https:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results-450x208.png 450w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/div><\/div><\/div>\r\n\r\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><p><strong>Conclusions summary:<\/strong><\/p>\n<ul>\n<li>64 K Cluster Size indeed still make sense as a standard. Although it depends a lot on the actual drive configuration the exceptions will apply to a minority of servers-<\/li>\n<li>It is worthwhile to think out of the RAID 5 and Raid 10 \u201cstandards\u201d.<\/li>\n<li>It is not generally worth to go for Stripe Sets because of Speed and risk the much higher probability of failures.<\/li>\n<li>A cluster size of 4 K in my eyes is not worth considering according to my measurements and the slightly higher risk of integrity problems \u2013 unless your storage vendor proves you so!<\/li>\n<li>If you need to tune a specific workload until the last IO or have an extraordinarily fine Piece of hardware, you should measure accurately and not go by general recommendations (like in this very Blog-post \ud83d\ude09 ) and determine the best configuration for your very Scenario<\/li>\n<\/ul>\n<p>You can download the complete results to draw your own conclusions here: <a href=\"http:\/\/andreas-wolter.com\/wp-content\/uploads\/2017\/11\/1711_Disk-Benchmark-Results.zip\">1711_Disk-Benchmark-Results.zip<\/a><\/p>\n<p>I hope you find this useful in your next discussions and implementation plans.<\/p>\n<p>Andreas<\/p>\n<\/div><\/section>\r\n\r\n<div  class='hr av-av_hr-0ff602b3e980a3377077ff3c1c834df6 hr-default  avia-builder-el-11  el_after_av_textblock  el_before_av_one_full '><span class='hr-inner '><span class=\"hr-inner-style\"><\/span><\/span><\/div>\r\n\r\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-av_one_full-97c650ae075063b375f558a776c570f8\">\n#top .flex_column.av-av_one_full-97c650ae075063b375f558a776c570f8{\nmargin-top:40px;\nmargin-bottom:40px;\n}\n.flex_column.av-av_one_full-97c650ae075063b375f558a776c570f8{\nborder-radius:0px 0px 0px 0px;\npadding:0px 0px 0px 0px;\n}\n.responsive #top #wrap_all .flex_column.av-av_one_full-97c650ae075063b375f558a776c570f8{\nmargin-top:40px;\nmargin-bottom:40px;\n}\n<\/style>\n<div  class='flex_column av-av_one_full-97c650ae075063b375f558a776c570f8 av_one_full  avia-builder-el-12  el_after_av_hr  el_before_av_social_share  first flex_column_div av-zero-column-padding  '     ><style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-av_hr-48dd840c68c34b08a701e1ed7d6a83fe\">\n#top .hr.hr-invisible.av-av_hr-48dd840c68c34b08a701e1ed7d6a83fe{\nmargin-top:-50px;\nheight:1px;\n}\n<\/style>\n<div  class='hr av-av_hr-48dd840c68c34b08a701e1ed7d6a83fe hr-invisible  avia-builder-el-13  el_before_av_textblock  avia-builder-el-first '><span class='hr-inner '><span class=\"hr-inner-style\"><\/span><\/span><\/div>\n<section  class='av_textblock_section av-av_textblock-2de302bf1aa3cf4c9157dbe6f50ac7eb '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/BlogPosting\" itemprop=\"blogPost\" ><div class='avia_textblock'  itemprop=\"text\" ><div><\/div>\n<div><\/div>\n<\/div><\/section><\/div>\r\n\r\n<div  class='av-social-sharing-box av-av_social_share-8644d330ffb238fff0cfa858c5295467 av-social-sharing-box-default  avia-builder-el-15  el_after_av_one_full  el_before_av_hr  av-social-sharing-box-fullwidth'><div class=\"av-share-box\"><h5 class='av-share-link-description av-no-toc '>Share<\/h5><ul class=\"av-share-box-list noLightbox\"><li class='av-share-link av-social-link-facebook' ><a target=\"_blank\" aria-label=\"Share on Facebook\" href=\"https:\/\/www.facebook.com\/sharer.php?u=https:\/\/andreas-wolter.com\/en\/1711_optimal-cluster-sizes-for-sql-server-on-ssds\/&#038;t=Optimal%20Cluster%20sizes%20for%20SQL%20Server%20on%20SSDs%20%E2%80%93%20are%2064K%20still%20important%3F\" aria-hidden=\"false\" data-av_icon=\"\ue8f3\" data-av_iconfont=\"entypo-fontello\" title=\"\" data-avia-related-tooltip=\"Share on Facebook\" rel=\"noopener\"><span class='avia_hidden_link_text'>Share on Facebook<\/span><\/a><\/li><li class='av-share-link av-social-link-twitter' ><a target=\"_blank\" aria-label=\"Share on Twitter\" href=\"https:\/\/twitter.com\/share?text=Optimal%20Cluster%20sizes%20for%20SQL%20Server%20on%20SSDs%20%E2%80%93%20are%2064K%20still%20important%3F&#038;url=https:\/\/andreas-wolter.com\/en\/?p=4501\" aria-hidden=\"false\" data-av_icon=\"\ue8f1\" data-av_iconfont=\"entypo-fontello\" title=\"\" data-avia-related-tooltip=\"Share on Twitter\" rel=\"noopener\"><span class='avia_hidden_link_text'>Share on Twitter<\/span><\/a><\/li><li class='av-share-link av-social-link-linkedin' ><a target=\"_blank\" aria-label=\"Share on LinkedIn\" href=\"https:\/\/linkedin.com\/shareArticle?mini=true&#038;title=Optimal%20Cluster%20sizes%20for%20SQL%20Server%20on%20SSDs%20%E2%80%93%20are%2064K%20still%20important%3F&#038;url=https:\/\/andreas-wolter.com\/en\/1711_optimal-cluster-sizes-for-sql-server-on-ssds\/\" aria-hidden=\"false\" data-av_icon=\"\ue8fc\" data-av_iconfont=\"entypo-fontello\" title=\"\" data-avia-related-tooltip=\"Share on LinkedIn\" rel=\"noopener\"><span class='avia_hidden_link_text'>Share on LinkedIn<\/span><\/a><\/li><\/ul><\/div><\/div>\r\n\r\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-av_hr-4474f20d2389e2e5ecf918a02da5132e\">\n#top .hr.hr-invisible.av-av_hr-4474f20d2389e2e5ecf918a02da5132e{\nheight:50px;\n}\n<\/style>\n<div  class='hr av-av_hr-4474f20d2389e2e5ecf918a02da5132e hr-invisible  avia-builder-el-16  el_after_av_social_share  el_before_av_comments_list '><span class='hr-inner '><span class=\"hr-inner-style\"><\/span><\/span><\/div>\r\n\r\n<div  class='av-buildercomment av-av_comments_list-88ce68e426f11248fa394058a3de040f  av-blog-meta-author-disabled av-blog-meta-html-info-disabled'><\/div>","protected":false},"excerpt":{"rendered":"Lately, with the advance of SSDs, more and more administrators are wondering: Is the old rule to use a 64K Cluster size (aka \u201cFile Allocation Unit size\u201d) for SQL Server still applicable on today\u2019s hard drives, especially SSDs or even Flash? And: Does it apply to all RAID-types equally? This summer I took some time [&hellip;]","protected":false},"author":4,"featured_media":4603,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,44],"tags":[283],"class_list":["post-4501","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","category-storage-engine","tag-benchmark"],"_links":{"self":[{"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/posts\/4501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/comments?post=4501"}],"version-history":[{"count":23,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/posts\/4501\/revisions"}],"predecessor-version":[{"id":5602,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/posts\/4501\/revisions\/5602"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/media\/4603"}],"wp:attachment":[{"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/media?parent=4501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/categories?post=4501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/andreas-wolter.com\/en\/wp-json\/wp\/v2\/tags?post=4501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}