Sql-server – SQL Server Hardware Configuration Recommendations

hardwaresql server

We're in the process of building a new SQL server, and would like some recommendations on hardware. Currently, we build all systems in house. With the information below, what would you recommend for drives and an external SAS cage. Also, in this workload, how beneficial would SAS be vs. SATA2?

Basic specs so far:

  • AMD Phenom II X4 955 CPU
  • 8GB RAM
  • 2TB RAID6 storage (thinking 450GB Seagate Cheetah 15K.6 drives)
  • 1TB RAID1 storage (why below) (1TB Seagate Barracuda ES.2)
  • 3ware 9690SA SAS Controller

Software:

  • Windows 2003 or 2008 server (haven't yet decided)
  • SQL Server 2005 or 2008 (will depend on application compatibility)

Workload:

This server is fairly read/write heavy for most applications (about 1TB) (financials, internal apps, etc). We also have GIS data on the server that is used by ArcGIS. Our plan is to have our vector data on the main RAID6 array with the raster data (about 750GB) being on the RAID1 array (since it's use isn't as frequent).

Best Answer

I would suggest RAID10 for heavy database work that isn't mainly read-only, not RAID5 or 6. On a 4-drive RAID6 array each block write (or partial block write) could be turned into a read (to get the other data block) followed by three writes (one for the initial write, two for the two parity blocks) which can have a significant write performance impact. With RAID10 each (partial) block write is just two writes to disk.

If your database access did include very few writes then RAID6 may be preferable for redundancy as a RAID6 array can survive any two drives failing where-as a RAID10 array of four drive will only survive 4 of the 6 possible combinations of two failed drives, but you state that you expect the activity to be both read and write intensive (and you have good backup and disaster recovery plans, right?).

Obviously make sure you go for a 64 bit edition of Windows and SQL Server, otherwise you'll not be able to use all that RAM without performance draining hacks like PAE. While we are on memory: I would suggest more if you can. RAM is not expensive these days, even good know-brand ECC capable RAM, so going up from 8 to how-ever-much-you-can-fit-on-the-board isn't a bad idea. For most applications in SQL server (with big enough databases) you will notice the benefit under any appreciable load as it will greatly reduce I/O operations for read queries as a larger working set can be held in memory. From your description it sounds like you have a data size and activity pattern that would benefit from how ever much RAM you can practically throw at it. Many new servers support 16Gb of RAM these days, and 32Gb is not uncommon (and increasingly neither is support for 64Gb, though that is getting into the "specialist" market so you may have to pay a premium for the extra).

Related Topic