<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.6.5" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Good Database Design is Mightier than Hardware</title>
	<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware</link>
	<description>News and views from Pythian DBAs</description>
	<pubDate>Fri,  5 Dec 2008 03:11:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
		<item>
		<title>By: Randall</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-303195</link>
		<dc:creator>Randall</dc:creator>
		<pubDate>Sat, 22 Nov 2008 20:18:53 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-303195</guid>
		<description>@mark,

look into Big O Notation:
http://en.wikipedia.org/wiki/Big_O_notation

Analyzing the performance of algorithms processing varying amounts of data is a science.  Often times, more hardware isn't going to matter. 

I recall a story of a database app a company had written.  It was slow in production, so they added 10x the hardware at the server side, but it was still slow, so they hired a top level consultant to come in and help them figure out how to speed it up.

First question the consultant asked was, "Have you indexed the tables?"

"Index?" the client asked...</description>
		<content:encoded><![CDATA[<p>@mark,</p>
<p>look into Big O Notation:<br />
<a href="http://en.wikipedia.org/wiki/Big_O_notation" rel="nofollow">http://en.wikipedia.org/wiki/Big_O_notation</a></p>
<p>Analyzing the performance of algorithms processing varying amounts of data is a science.  Often times, more hardware isn&#8217;t going to matter. </p>
<p>I recall a story of a database app a company had written.  It was slow in production, so they added 10x the hardware at the server side, but it was still slow, so they hired a top level consultant to come in and help them figure out how to speed it up.</p>
<p>First question the consultant asked was, &#8220;Have you indexed the tables?&#8221;</p>
<p>&#8220;Index?&#8221; the client asked&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Johansen</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-261439</link>
		<dc:creator>Mark Johansen</dc:creator>
		<pubDate>Thu, 21 Aug 2008 03:08:28 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-261439</guid>
		<description>"It's cheaper to buy more hardware than to optimize software" is one of those cliches that is true just often enough that people leap to the conclusion that it is always true. But a little thought will show that that is absurd.

If you have a program that requires 600 MB of RAM and you want to run it on a machine that only has 500 MB installed, it's surely cheaper and easier to just upgrade the memory. (I'm skimming over issues of virtual memory and all to make the point.) But I have had many occasions where I have found that, for example, a program requires exponentially more time to process more records. So our little test database of 100 records runs in 5 seconds, but when we increase it to 200 records it requires 15 seconds, 300 records requires 45 seconds, 400 requires 135 seconds, and it quickly becomes obvious that when we get to a real database with a million records there won't be enough computer power in the world to do the job in our lifetimes. At that point you need to revisit the algorithms and come up with a fundamentally different approach.

By the way, while I realize that there are times when throwing more hardware at it is the right solution from a cost-benefit perspective, I find this very emotionally unsatisfying. I take pride in my work and I want to write the best program I can. When I have to stop and say, "Hey, it's good enough; put it into production and get on to the next task," that just offends my sense of pride. I suppose craftsmen go through this all the time: Yes, you'd really like to spend another few weeks making that piece of woodwork absolutely perfect, but if you do it will only increase the potential selling price by a couple of dollars, no way is it worth your time.

Hey, can I get in a shameless plug for my book? "A Sane Approach to Database Design". Available at "electrictactics.com". Probably on Amazon by the time anyone reads this post.</description>
		<content:encoded><![CDATA[<p>&#8220;It&#8217;s cheaper to buy more hardware than to optimize software&#8221; is one of those cliches that is true just often enough that people leap to the conclusion that it is always true. But a little thought will show that that is absurd.</p>
<p>If you have a program that requires 600 MB of RAM and you want to run it on a machine that only has 500 MB installed, it&#8217;s surely cheaper and easier to just upgrade the memory. (I&#8217;m skimming over issues of virtual memory and all to make the point.) But I have had many occasions where I have found that, for example, a program requires exponentially more time to process more records. So our little test database of 100 records runs in 5 seconds, but when we increase it to 200 records it requires 15 seconds, 300 records requires 45 seconds, 400 requires 135 seconds, and it quickly becomes obvious that when we get to a real database with a million records there won&#8217;t be enough computer power in the world to do the job in our lifetimes. At that point you need to revisit the algorithms and come up with a fundamentally different approach.</p>
<p>By the way, while I realize that there are times when throwing more hardware at it is the right solution from a cost-benefit perspective, I find this very emotionally unsatisfying. I take pride in my work and I want to write the best program I can. When I have to stop and say, &#8220;Hey, it&#8217;s good enough; put it into production and get on to the next task,&#8221; that just offends my sense of pride. I suppose craftsmen go through this all the time: Yes, you&#8217;d really like to spend another few weeks making that piece of woodwork absolutely perfect, but if you do it will only increase the potential selling price by a couple of dollars, no way is it worth your time.</p>
<p>Hey, can I get in a shameless plug for my book? &#8220;A Sane Approach to Database Design&#8221;. Available at &#8220;electrictactics.com&#8221;. Probably on Amazon by the time anyone reads this post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Randall</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-187914</link>
		<dc:creator>Randall</dc:creator>
		<pubDate>Thu, 01 May 2008 04:28:16 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-187914</guid>
		<description>Big hardware breeds lazy programmers...</description>
		<content:encoded><![CDATA[<p>Big hardware breeds lazy programmers&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Log Buffer #88: a Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-170790</link>
		<dc:creator>Log Buffer #88: a Carnival of the Vanities for DBAs</dc:creator>
		<pubDate>Fri, 14 Mar 2008 16:56:28 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-170790</guid>
		<description>[...] SQL is 5 LIOs per row per row source.&#8221; He cites a post by Pythian&#8217;s Shakir Sadikali: Good Database Design is Mightier than Hardware. (Incidentally, Shakir will be handling next week&#8217;s [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] SQL is 5 LIOs per row per row source.&#8221; He cites a post by Pythian&#8217;s Shakir Sadikali: Good Database Design is Mightier than Hardware. (Incidentally, Shakir will be handling next week&#8217;s [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Oracle Musings &#187; The Rule of 5</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-170051</link>
		<dc:creator>Oracle Musings &#187; The Rule of 5</dc:creator>
		<pubDate>Tue, 11 Mar 2008 20:41:02 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-170051</guid>
		<description>[...] point you at an excellent blog post by Shakir Sadikali at the Pythian Group which shows off a ten-node RAC cluster brought to its knees [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] point you at an excellent blog post by Shakir Sadikali at the Pythian Group which shows off a ten-node RAC cluster brought to its knees [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nigel Thomas</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-169083</link>
		<dc:creator>Nigel Thomas</dc:creator>
		<pubDate>Sat, 08 Mar 2008 11:55:34 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-169083</guid>
		<description>Other references: &lt;a href="http://asktom.oracle.com/tkyte/unindex/index.html" rel="nofollow"&gt;Tom Kyte&lt;/a&gt; and &lt;a href="http://www.jlcomp.demon.co.uk/faq/fk_ind.html" rel="nofollow"&gt;Connor McDonald (on Jonathan Lewis's site&lt;/a&gt;.

As well as full table scans, there's a locking - sometimes deadlocking - issue (which full table scans are more likely to reveal, of course). See &lt;a href="http://orastory.wordpress.com/2007/08/14/deadlock-detection-unindexed-foreign-keys/" rel="nofollow"&gt;OraStory&lt;/a&gt; for one anecdote. The FK locking behaviour has changed over time (sorry, can't find a good reference or version number quickly).</description>
		<content:encoded><![CDATA[<p>Other references: <a href="http://asktom.oracle.com/tkyte/unindex/index.html" rel="nofollow">Tom Kyte</a> and <a href="http://www.jlcomp.demon.co.uk/faq/fk_ind.html" rel="nofollow">Connor McDonald (on Jonathan Lewis&#8217;s site</a>.</p>
<p>As well as full table scans, there&#8217;s a locking - sometimes deadlocking - issue (which full table scans are more likely to reveal, of course). See <a href="http://orastory.wordpress.com/2007/08/14/deadlock-detection-unindexed-foreign-keys/" rel="nofollow">OraStory</a> for one anecdote. The FK locking behaviour has changed over time (sorry, can&#8217;t find a good reference or version number quickly).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lotso</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-168917</link>
		<dc:creator>lotso</dc:creator>
		<pubDate>Fri, 07 Mar 2008 19:11:01 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-168917</guid>
		<description>I'm running a 250GB sized PG DB on a celeron 1.7G box and 768MB of ram which never really sees it's load average hit &#60; 3 and due to the design of it, it's handling the load pretty well and users are happier with the response compared to the company's own OLTP styled DB on mssql

right tools for the job.</description>
		<content:encoded><![CDATA[<p>I&#8217;m running a 250GB sized PG DB on a celeron 1.7G box and 768MB of ram which never really sees it&#8217;s load average hit &lt; 3 and due to the design of it, it&#8217;s handling the load pretty well and users are happier with the response compared to the company&#8217;s own OLTP styled DB on mssql</p>
<p>right tools for the job.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Vallee</title>
		<link>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-168813</link>
		<dc:creator>Paul Vallee</dc:creator>
		<pubDate>Fri, 07 Mar 2008 15:09:04 +0000</pubDate>
		<guid>http://www.pythian.com/blogs/710/good-database-design-is-mightier-than-hardware#comment-168813</guid>
		<description>Hi Shakir

The article and query at ixora's site is &lt;a href=http://www.ixora.com.au/q+a/0010/27002828.htm rel="nofollow"&gt;here&lt;/a&gt; - the year was 2000. We miss you Steve. :-)

Paul</description>
		<content:encoded><![CDATA[<p>Hi Shakir</p>
<p>The article and query at ixora&#8217;s site is <a href=http://www.ixora.com.au/q+a/0010/27002828.htm rel="nofollow">here</a> - the year was 2000. We miss you Steve. :-)</p>
<p>Paul</p>
]]></content:encoded>
	</item>
</channel>
</rss>
