Physical Database Design: The Database Professional's Guide to Exploiting Indexes, Views, Storage, and More

Perhaps one of the least discussed but most practical problems of database server design is the relative proportion of resources required within the server: relative amount of disk storage, number of spindles, number and speed of the CPUs, RAM, etc. As a general rule of course, more is better for most resources, but cost climbs rapidly for some resources. And while CPUs are relatively inexpensive, large NUMA systems with complex bus architectures to efficiently support clusters of CPUs are dramatically more expensive than the simple sum of the cost of the CPUs they include might suggest. Several factors play into this problem:
The relative speed of disk access versus RAM.
The relative cost of CPU versus disk.
The relative cost of RAM versus disk.
The topology choice (e.g., shared nothing or shared everything).
The database access skew (how much of your data is really active).
There are no absolute rules that define what is right. However, there are some best practices. What follows are some guidelines, which may not hold true in future generations of components.
Very generally, best CPU and I/O balancing appears to occur when CPU-to-data (GB) ratios are around 1:100, RAM-to-disk ratios are around 1:25, and CPU-to-disk ratios are 1:6. These are very approximate ratios that can vary quite widely based on component speeds. Because CPU speeds, memory speed, and disk capacity change significantly every year, these ratios can vary easily by a factor...