Computers get faster, massive parallel processing is now
standard, spinning disks are disappearing, and gigabit networks are
common. So with all this improvement in
hardware speed do we need to optimizer our code anymore?
If you’ve been in the industry for a while you’ve seen this
pattern before. Hardware gets faster and
cheaper and what was a perceived problem before now seems to be solved with
faster better machines. And that is
true, if we stayed with the same software and data load of times gone by. But we don’t.
A good example of this is just data volume. Many years ago, a 20Megabyte hard drive was
considered big. (My first hard drive was
a big as a bread box and was 5 Megabytes, yes Five.) Newer faster smaller drives came out. Then it was easy to store 100s of Megabytes,
then Gigabytes and now Terabytes are common place. What did this do? In the
past a company might only store a year or so of data online as they couldn’t’
afford the storage for more. Now they
can easily store 10 or more years of data.
What did this do? It demanded more of the computer to
process all that data, faster CPUs and more of them were needed. And code had to be more efficient. In the Oracle world I work in this drove for
different ways to store data, partitioning for example. But the code also needed to access the data
the right way. The right index and
predicate could mean the difference between get a response in a reasonable
amount of time, or never having it complete.
Today were seeing this all over again. We have “big data” now, and we want to
process this data in a blink of an eye to slice and dice sales data to get that
marketing edge on the competition. Or
make that decision on what to invest in, or a thousand other questions. We will continue to ask for more and want it
faster from our data as we accumulate more data.
All the things I mentioned at the start give us even the
chance to make this happen. What it
doesn’t mean is that we can write sloppy code and just hope that the hardware
will be fast enough to make up for our suboptimal code.
It’s not good enough that code get the right results; it
still has to do that efficiently. The
right indexes still matter, the right predicates still matter and the right
statistics for the optimizer still matter.
In Oracle land the database engine can do a lot of amazing things. But it still isn’t as good as we are, we can
write better code and we all should strive for that in every piece of code.