{"id":145,"date":"2016-03-15T00:00:00","date_gmt":"2013-01-01T00:00:00","guid":{"rendered":"https:\/\/www.sqlhammer.com\/everything-has-a-cost"},"modified":"2026-03-18T21:52:25","modified_gmt":"2026-03-18T21:52:25","slug":"everything-has-a-cost","status":"publish","type":"post","link":"https:\/\/sqlhammer.com\/index.php\/2016\/03\/15\/everything-has-a-cost\/","title":{"rendered":"Everything has a cost"},"content":{"rendered":"<p>Too often we end up in a conflict\u00a0while trying to explain how a minimally impacting function has no true business impact. If you are too detailed, no one wants to listen to you and you are wasting their time. If you are too high-level, they will challenge your evaluation because nothing costs nothing.<\/p>\n<h2>When we\u00a0felt the cost<\/h2>\n<p>Everything that occurs on a computer has a cost. There is no <em>secret\u00a0<strong>sauce<\/em> which allows computers to do\u00a0work without utilizing physical resources and taking time.<\/p>\n<p>Think back to the 1960s when <a href=\"https:\/\/en.wikipedia.org\/wiki\/Time-sharing\">time-sharing<\/a> was first introduced or <a href=\"http:\/\/www.relativelyinteresting.com\/comparing-todays-computers-to-1995s\/\">even 1995<\/a> when processors were single core and only about 33 MHz. The average cost of memory was about\u00a0$100 per MB. In those days, every CPU cycle mattered and had a noticeable impact on the performance of the system. Now we have processors whose clock speed has stopped being a direct measure for processing power because of multi-core designs. Windows Server 2016 can support up to 12 TB of main memory!<\/p>\n<p>Back\u00a0<em>in the day<\/em> it was easy to communicate costs. Today it can be a challenge to explain the cost of implementing or enabling a feature.<\/p>\n<h2>Wide-necked bottles<\/h2>\n<p>I once had a difficult discussion with a technically minded business stakeholder. We were going to enable <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/bb934049(v=sql.130\">Transparent Data Encryption<\/a>.aspx)\u00a0(TDE). I was asked, \u201c<\/strong><em>what is the performance impact of enabling TDE?<\/em><em>*\u201d This person knew enough about computing and encryption to realize that it is not free. I had a couple of responses available, off the top of my head.<\/p>\n<ul>\n<li>Microsoft officially declares a <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/cc278098(v=sql.130\">3-5% performance degradation<\/a>.aspx).<\/li>\n<\/ul>\n<ul>\n<li>None, the application\u00a0won\u2019t be affected.<\/li>\n<\/ul>\n<ul>\n<li>The benefit is worth the cost.<\/li>\n<\/ul>\n<p>All three of those responses were true. #1 and #2 might seem to conflict but they do not.<\/p>\n<h3>A little background\u2026<\/h3>\n<p>This system was new. It had only one year worth of production data and it was the prize jewel of the company. There was a lot riding on the success of the system and that translated into funding. When I designed the physical architecture I was allowed to buy\u00a0hardware beyond anything the company had owned before. The result of this was that, with only one year worth of data,\u00a0all the OLTP databases fit into memory (with SSDTs, as well) and there was CPU available for 5 years of 50% annual\u00a0growth.<\/p>\n<p>I knew all of this and understood exactly how wide our bottle necks were. Even though\u00a0TDE\u00a0was going to increase our CPU usage, I was talking to a business stakeholder. No matter how technically minded\u00a0they were, they are concerned with noticeable impacts to the users and business processes. In this case, there was not going to be any impact at all. Weeks after this conversation, heavy load testing showed no measurable impact. The TDE impact fell into the small margin of\u00a0performance fluctuations which occurred due to random user simulations.\u00a0There was a minor up-tick in our server resource use.<\/p>\n<h2>When your wide-neck is really just a long-neck<\/h2>\n<p>In my example, I was intimately familiar with the system that I was talking about. This discussion becomes much more difficult when you are not familiar with the system. Maybe you are giving a presentation and making general comments about a feature, maybe you are a consultant who has only seen the system once so far, or maybe you manage too many servers and can\u2019t be intimate with any one of them.<\/p>\n<p>I attended <a href=\"https:\/\/mvp.microsoft.com\/en-us\/PublicProfile\/5001110?fullName=Christopher%20%20Bell\">Chris Bell<\/a>\u2018s <a href=\"http:\/\/www.slideshare.net\/CheeseRogue1\/hacking-expos-using-ssl-to-secure-sql-server-connections\">Hacking Expose<\/a>\u00a0at a SQL Saturday\u00a0a year or two ago and he faced this same challenge. Without putting exact words into Chris\u2019 mouth, he made a comment about enabling SSL on its performance impact. He was challenged by someone in the audience who fully understood the mechanics of SSL and disagreed with his comment about minimal impact. A short discussion occurred which temporarily disrupted the presentation. The vexing part is that both Chris and the attendee were correct. Neither presented any false statements but\u00a0there was still a minor conflict.<\/p>\n<p>I believe that these conflicts are partly brought about by differences in perspective. Cassy, the DBA,\u00a0who works in a well-funded shop might not allow their servers to go above 60% CPU or always has 20% more memory than is required. Cassy might see a feature as non-impacting while Tiffany, who tunes queries daily to prevent\u00a0the CPU from pegging, might see\u00a0the same impact as completely unacceptable.<\/p>\n<h2>Do I have a solution?<\/h2>\n<p>No, I do not have a complete solution but I do have a couple of recommendations.<\/p>\n<ul>\n<li>Draw pictures of your bottles. I find it easy to explain the\u00a0<\/em>non-impact* if you show them that a few grooves in the bottle do not affect the through-put, if the bottle neck is smaller than the grooves.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.sqlhammer.com\/everything-has-a-cost\/bottle-neck-compare\/\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/wp-content\/uploads\/2015\/11\/Bottle-neck-compare-300x300.jpeg\" alt=\"\" \/><\/a><\/p>\n<ul>\n<li>Speak about facts not impressions. If you do not have testing data from your system yet, rely upon Microsoft\u2019s official documentation or credible sources who have published a performance analysis.<\/li>\n<\/ul>\n<ul>\n<li>Separate impact to users \/ customers from impact the system resources. For example say, \u201cthis will have a 2-3%\u00a0increase in CPU\u00a0usage but zero impact to customers.\u201d<\/li>\n<\/ul>\n<ul>\n<li>Explain why there is no impact to users.<\/li>\n<\/ul>\n<p>This only affects an asynchronous process which does not hold up the user.<\/p>\n<ul>\n<li>We have 40%\u00a0unused memory and this will only increase our memory usage by 5% leaving us 35% free.<\/li>\n<\/ul>\n<h2>What do you do?<\/h2>\n<p>Please let me know, in the comments section, how you tackle these discussions and achieve clarity without conflict.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Too often we end up in a conflict\u00a0while trying to explain how a minimally impacting function has no true business impact. If you are too detailed, no one wants to listen to you and you are wasting their time. If you are too high-level, they will challenge your evaluation because nothing costs nothing. When we\u00a0felt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,6,7,10,11,14],"tags":[],"class_list":["post-145","post","type-post","status-publish","format-standard","hentry","category-administration","category-career","category-community","category-disaster-recovery","category-general","category-performance"],"_links":{"self":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":1,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/145\/revisions"}],"predecessor-version":[{"id":407,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/145\/revisions\/407"}],"wp:attachment":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/media?parent=145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/categories?post=145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/tags?post=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}