Performance and Stability-Related Fixes in All SQL Server 2008 SP2 Cumulative Updates

SQL Server 2008 Service Pack 2 was retired and became an “unsupported service pack” back on September 17, 2012. Despite this, I have been running into a lot of systems lately that are still running SQL Server 2008 Service Pack 2 or older lately, so I thought it made sense to follow up my previous post, Performance and Stability-Related Fixes in All SQL Server 2008 SP3 Cumulative Updates with another one listing some of the most relevant hotfixes in all eleven of the SQL Server 2008 Service Pack 2 Cumulative Updates.

Since SQL Server 2008 Service Pack 2 is retired, I think you should be on SQL Server 2008 Service Pack 3. The purpose of this list is to help convince you (and your organization) that you should keep your SQL Server 2008 up-to-date and in a supported status by highlighting some of the fixes that you are missing by staying on an older build of SQL Server 2008.

If you don’t believe in applying SQL Server Cumulative Updates, you should be aware that SQL Server 20008 SP3 RTM (Build 10.0.5500) only includes the fixes up through SQL Server 2008 SP2 CU4 (Build 10.0.4285), so you won’t have many of the fixes listed in this post.

You can always read the fix-lists for each cumulative update since SP2 RTM, available from this master CU list article from Microsoft:

The SQL Server 2008 builds that were released after SQL Server 2008 Service Pack 2 was released

Or, you can start out with this filtered list (of Engine-related fixes) that I put together:

 

SQL Server 2008 SP2 CU1 (10.0.4266)  November 16, 2010

FIX: Poor performance and some occasional non-yielding scheduler errors occur when you create a complex view that references a large amount of nested views or tables in SQL Server 2008

FIX: A query that uses a parallel query plan returns different results every time that you run the query in SQL Server 2005, SQL Server 2008 R2 or SQL Server 2008

FIX: A query returns an incorrect result if it uses an index that is being rebuilt online in SQL Server 2005, SQL Server 2008 R2 or SQL Server 2008

 

SQL Server 2008 SP2 CU2 (10.0.4272)  January 17, 2011

FIX: An unresolved deadlock occurs when a database is recovered in SQL Server 2005, SQL Server 2008, or in SQL Server 2008 R2

FIX: LOB pages that are allocated in a failed INSERT statement may not be reclaimed after you apply SQL Server 2005 SP3, SQL Server 2005 SP4, SQL Server 2008 SP1 or SQL Server 2008 R2

FIX: Error message when you run the “sp_createstats” stored procedure in SQL Server 2008 or in SQL Server 2008 R2 if the table contains a nondeterministic computed column

FIX: High CPU usage when you run a SQL Server Agent job in SQL Server 2008 or SQL Server 2008 R2 if a column of a dynamic SELECT statement has a value that is many characters long

FIX: Slow performance when you recover a database if there are many VLFs inside the transaction log in SQL Server 2005 or in SQL Server 2008

“Non-yielding Scheduler” error and SQL Server 2008 stops responding intermittently in Windows Server 2008

 

SQL Server 2008 SP2 CU3 (10.0.4279)  March 21, 2011

FIX: Database mirroring session is suspended in SQL Server 2005 and in SQL Server 2008 and in SQL Server 2008 R2 if the High-performance (asynchronous) mode is used

FIX: Poor performance may occur when you execute a query that contains multiple self-join operations on the same column in SQL Server 2005, in SQL Server 2008 and in SQL Server 2008 R2

FIX: A query that uses the DATEDIFF function may run slowly in SQL Server 2005 or in SQL Server 2008

FIX: SQL Server Agent job runs incorrectly if it is scheduled to run every hour on the last day of every week or month in SQL Server 2005 or in SQL Server 2008

FIX: Error 7359 when you run a query against a user-defined function or a view that uses a synonym on a linked server in SQL Server 2005 or SQL Server 2008

FIX: SQL Server 2008 stops responding when you alter or stop an Extended Events session

 

SQL Server 2008 SP2 CU4 (10.0.4285)  May 16, 2011

FIX: “A severe error occurred on the current command” error message when you use the Freetexttable or the Containstable function on an indexed view in a CTE query in SQL Server 2008 or in SQL Server 2008 R2

FIX: Computer stops responding when you create a database that contains a FILESTREAM filegroup in SQL Server 2008 or in SQL Server 2008 R2 if a third-party mini-filter driver is installed

FIX: A common table expression-based query that uses the CHANGETABLE function runs very slowly in SQL Server 2008 Service Pack 1 or SQL Server 2008 R2

FIX:A query that has a CONTAINS predicate in a WHERE clause takes a long time to compile in SQL Server 2008 or SQL Server 2008 R2

FIX: SQL Server Browser service periodically does not respond to incoming requests

FIX: An access violation occurs when you restore a database and run the sp_replcounters stored procedure at the same time on a server that is running SQL Server 2008

FIX: Database corruption if data compression enabled on a partitioned table in SQL Server 2008

 

SQL Server 2008 SP2 CU5 (10.0.4316)  July 18, 2011

FIX: Errors when client application sends an attention signal to SQL Server 2008

FIX: Recovery takes longer than expected for a database in a SQL Server 2008 environment

 

SQL Server 2008 SP2 CU6 (10.0.4321)  September 19, 2011

FIX: Size of a data file that is committed by online page compression is larger than that is committed by offline page compression in SQL Server 2008 or in SQL Server 2008 R2

FIX: Assertion failure or other issues occur when you run a DML query against a table or a view that has two indexes in SQL Server 2008

FIX: Certain change tracking functions and DMVs do not work correctly after an automatic database mirroring failover occurs in SQL Server 2008 R2

FIX: You receive an incorrect result when you run a query that uses the row_number function in SQL Server 2008

 

SQL Server 2008 SP2 CU7 (10.0.4323)  November 21, 2011

FIX: SQL Server Agent job randomly stops when you schedule the job to run past midnight on specific days in SQL Server 2005 or in SQL Server 2008

FIX: Backup fails in SQL Server 2008 or in SQL Server 2008 R2 if you enable change tracking on the database

FIX: Transaction log backup is created even though no valid full backup exists in SQL Server 2008

FIX: Access violation when a request reads a missing index in SQL Server 2008

FIX: Access violation when you run a DBCC CHECKDB command against a database that contains a table that has a spatial index in SQL Server 2008

FIX: Access violation when a query is compiled in SQL Server 2008 

 

SQL Server 2008 SP2 CU8 (10.0.4326)  January 16, 2012

FIX: Access violation when you insert a record into a new empty partition in SQL Server 2008 or in SQL Server 2008 R2

FIX: SQL Server Agent job fails if you set the job schedule type as “Start automatically when SQL Server Agent starts” in SQL Server 2008 SP2

FIX: It takes a long time to restore a database in SQL Server 2008 R2 or in SQL Server 2008

FIX: Poor performance when you run a query that contains correlated AND predicates in SQL Server 2008

FIX: Unnecessary updates to a subscriber after you reinitialize it if a new article is added to a publication in SQL Server 2008

 

SQL Server 2008 SP2 CU9 (10.0.4330)  March 19, 2012

FIX: A database page is copied into a database snapshot even though the page is not updated when you perform a read operation in SQL Server 2008

Improvements for the DBCC CHECKDB command may result in faster performance when you use the PHYSICAL_ONLY option

FIX: Backup operation fails on a SQL Server 2008 database after you enable change tracking

 

SQL Server 2008 SP2 CU10 (10.0.4332)  May 21, 2012

FIX: Errors when a client application sends an attention signal to SQL Server 2008 or SQL Server 2008 R2

 

SQL Server 2008 SP2 CU11 (10.0.4333)  July 16, 2012

FIX: Event ID 322 error even though operations complete successfully in SQL Server 2008

 

Most of those hotfixes seem pretty significant to me (and this is just the Engine-related subset that I picked since Service Pack 2 RTM). I strongly encourage you to start reading the hotfix list when new cumulative updates are released, because there is a lot of good information there that may convince you and your organization to stay more current with your SQL Server Cumulative Updates. Keep in mind that SQL Server Cumulative Updates are actually cumulative, so if you install one, you will get all of the fixes for all of the previous Cumulative Updates for the Service Pack that you are on.

Performance and Stability-Related Fixes in All SQL Server 2008 SP3 Cumulative Updates

Even though there are two newer, major releases of SQL Server available, there are still many organizations running SQL Server 2008, which was a good, solid release of the product, with many improvements over SQL Server 2005. SQL Server 2008 (and SQL Server 2008 R2) are scheduled to fall out of mainstream support on July 8, 2014, which is still quite some time in the future. If you are running SQL Server 2008, you need to be on SQL Server 2008 Service Pack 3 (Build 10.0.5500) or newer, since all previous SQL Server 2008 Service Pack Levels have been retired and are considered “unsupported service pack” levels by Microsoft. SQL Server 2008 Service Pack 3 was released on October 6, 2011, which was quite some time ago.  I made some arguments for staying current with Service Packs and Cumulative Updates here: Making the Case for Regular SQL Server Servicing

Let’s say you want some specific justification and ammunition for applying the latest SQL Server 2008 SP3 Cumulative Update, which is CU11 (Build 10.0.5840), that was released on May 20, 2013. You could read the fix-lists for each cumulative update since SP3 RTM, available from this master CU list article from Microsoft:

The SQL Server 2008 builds that were released after SQL Server 2008 Service Pack 3 was released

Or, you can start out with this filtered list (of Engine-related fixes) that I put together:

SQL Server 2008 SP3 CU1 (10.0.5766) October 17, 2011

FIX: Recovery takes longer than expected for a database in a SQL Server 2008 or in a SQL Server 2008 R2 environment

FIX: Assertion failure or other issues occur when you run a DML query against a table or view that has two indexes in SQL Server 2008 or in SQL Server 2008 R2

FIX: Size of a data file that is committed by online page compression is larger than that is committed by offline page compression in SQL Server 2008 or in SQL Server 2008 R2

FIX: High memory usage when you run Replication Snapshot Agent in SQL Server 2008 or in SQL Server 2008 R2

 

SQL Server 2008 SP3 CU2 (10.0.5768) November 21, 2011

FIX: CLR stored procedure returns NULL after it is recompiled in SQL Server 2008 R2

FIX: Access violation when you insert a record into a new empty partition in SQL Server 2008

 

SQL Server 2008 SP3 CU3 (10.0.5770) January 16, 2012

FIX: Access violation when you run a DBCC CHECKDB command against a database that contains a table that has a spatial index in SQL Server 2008 or in SQL Server 2008 R2

FIX: Access violation when a query is compiled or recompiled in SQL Server 2008 or in SQL Server 2008 R2

FIX: It takes a long time to restore a database in SQL Server 2008 R2

 

SQL Server 2008 SP3 CU4 (10.0.5775) March 19, 2012

FIX: “A time-out occurred while waiting for buffer latch” error when many transactions concurrently update a database in SQL Server 2008 R2 or in SQL Server 2008 if the database uses the snapshot isolation level

FIX: Transaction log backup is created even though the full backup is canceled in SQL Server 2008 or in SQL Server 2008 R2

FIX: ghost_record_count values keep increasing in SQL Server 2008 R2 or in SQL Server 2008

Improvements for the DBCC CHECKDB command may result in faster performance when you use the PHYSICAL_ONLY option

FIX: Error message when you use DTA to tune one or more queries against a database that contains many objects in SQL Server 2008 R2 or in SQL Server 2008

FIX: Backup operation fails on a SQL Server 2008 database after you enable change tracking

 

SQL Server 2008 SP3 CU5 (10.0.5785) May 21, 2012

FIX: Slow performance when you restore a database in SQL Server 2008 R2 or in SQL Server 2008 if CDC is enabled

FIX: SQL Server Agent job randomly stops when you schedule the job to run past midnight on specific days in SQL Server 2005, in SQL Server 2008 or in SQL Server 2008 R2

 

SQL Server 2008 SP3 CU6 (10.0.5788) July 16, 2012

FIX: Errors when a client application sends an attention signal to SQL Server 2008 or SQL Server 2008 R2

FIX: SQL Server 2008 R2 or SQL Server 2008 stops responding and a “Non-yielding Scheduler” error is logged

FIX: Incorrect results are returned when you run a query that uses parallelism in the query execution plan in SQL Server 2008

 

SQL Server 2008 SP3 CU7 (10.0.5794) September 17, 2012

FIX: Error messages when you use dtexec to execute packages in SQL Server 2008 Integration Services

FIX: SQL Server Agent job fails if you set the job schedule type as “Start automatically when SQL Server Agent starts” in SQL Server 2008 SP2, SQL Server 2008 SP3 or SQL Server 2008 R2 SP2

FIX: Poor performance when you run a query that contains correlated AND predicates in SQL Server 2008 or in SQL Server 2008 R2 or in SQL Server 2012

 

SQL Server 2008 SP3 CU8 (10.0.5828) November 19, 2012

FIX: Memory leak if you enable the AUTO_UPDATE_STATISTICS_ASYNC statistics option in SQL Server 2008

FIX: Large queries that modify data run slower than expected when many locks accumulate in a SQL Server 2008 R2

 

SQL Server 2008 SP3 CU9 (10.0.5829) January 21, 2013

FIX: Access violation when you run a query that contains many constant values in an IN clause in SQL Server 2008

 

SQL Server 2008 SP3 CU10 (10.0.5835) March 19, 2013

FIX: Access violation or incorrect result when you insert data into or update a new partition of a partitioned table in SQL Server 2008 R2 or SQL Server 2008

FIX: Poor performance when table-valued functions use many table variables in SQL Server 2008 R2 or SQL Server 2008

FIX: Access violation when you run DML statements against a table that has partitioned indexes in SQL Server 2008 R2, in SQL Server 2008 or in SQL Server 2012

FIX: Index size increases significantly after you rebuild the index online and RCSI is enabled in SQL Server 2008

 

SQL Server 2008 SP3 CU11 (10.0.5840) May 20, 2013

FIX: SQL Server may freeze when an instance of SQL Server 2012, SQL Server 2008 or SQL Server 2008 R2 is shut down

FIX: Access Violation when you use a SQL profiler to trace an RPC event class in SQL Server 2008

Most of those hotfixes seem pretty significant to me (and this is just the Engine-related subset that I picked since Service Pack 3 RTM). I strongly encourage you to start reading the hotfix list when new cumulative updates are released, because there is a lot of good information there that may convince you and your organization to stay more current with your SQL Server Cumulative Updates. Keep in mind that SQL Server Cumulative Updates are actually cumulative, so if you install one, you will get all of the fixes for all of the previous Cumulative Updates for the Service Pack that you are on.

SQL Server 2008 Service Pack 3 Cumulative Update 11

Microsoft has released SQL Server 2008 Service Pack 3 Cumulative Update 11, which is Build 10.0.5840.00. There are six hotfixes in the public fix list. There is no corresponding cumulative update for earlier service pack levels for SQL Server 2008, since they are retired. If you are on SQL Server 2008, you really should be on Service Pack 3 by now (since Service Pack 2 was retired on September 17, 2012, Service Pack 1 was retired on September 19, 2011, and the RTM branch was retired on April 13, 2010).  I still see a lot of servers running unsupported Service Packs of SQL Server 2008.

Remember, this cumulative update is only for SQL Server 2008 Service Pack 3. It is not for SQL Server 2008 R2.

A SQL Server Hardware Tidbit a Day – Day 30

For the final post in this series, I want to list a few resources that you can use to help stay current with what is happening in the world of server hardware and storage. I really think that a database professional has a professional responsibility to know the details of their database server hardware and storage subsystem, especially for their most important database servers.

Many DBAs do not know much about hardware and storage, while many server and storage administrators don’t know much about SQL Server and the demands that it places on hardware for different types of workloads. Becoming educated and staying up to date is not that difficult, and it will make you a better DBA.

 

Web Sites and Blogs

AnandTech Enterprise

AnandTech

Tom’s Hardware

Real World Technologies

CPU World

Intel ARK Database

CPU-Z

Storage Review

The SSD Review

Transaction Processing Performance Council

 

Books

SQL Server Hardware book

Professional SQL Server 2012 Internals and Troubleshooting

 

Pluralsight Courses

Understanding Server Hardware

SQL Server 2012: Evaluating and Sizing Hardware

SQL Server 2012: Installation and Configuration

A SQL Server Hardware Tidbit a Day – Day 29

For Day 29 of the series, I will talk about AMD Turbo CORE technology. AMD Turbo CORE is a technology that was first introduced in the AMD Phenom II X4 desktop processor, but the way AMD implemented it in the Bulldozer family and Piledriver family of processors is greatly enhanced. AMD Turbo CORE is similar to Intel Turbo Boost technology in concept (although AMD claims that it works better).  According to AMD:

AMD Turbo CORE is deterministic, governed by power draw, not temperature as other competing products are. This means that even in warmer climates you’ll be able to take advantage of that extra headroom if you choose. This helps ensure a max frequency is workload dependent, making it more consistent and repeatable

AMD Turbo CORE allows individual cores in the processor to speed up from the base clock speed up to the TDP level, automatically adding extra single-threaded performance for the processor. Conceptually, it is the opposite of AMD PowerNow! technology. Instead of trying to watch for usage patterns and lowering the processor core speed to try to reduce power consumption, Turbo CORE is watching the power consumption to see how high it can move the clock speed up.

This feature, which is new to AMD server processors, allows individual cores to use the extra power headroom between average and maximum power, turning it into more clock speed. Bulldozer implements a significantly more aggressive version of this capability than the AMD Phenom desktop processor. Should the processor get too close to the TDP power limit, it will automatically throttle back somewhat to ensure that it is continuing to operate within the specified TDP guidelines. This allows for significantly higher maximum clock speeds for the individual cores.

AMD has stated that Bulldozer will boost the clock speed of all 16 cores by 500MHz, even when all cores are active with server workloads. Even higher boost states available with half of the cores active, anywhere from 700Mhz to 900MHz. With the Bulldozer and Piledriver processors you see processors marketed with a base and a maximum frequency, base will reflect the actual clock speed on the processor and max will reflect the highest AMD Turbo CORE state.

Just like with Intel Turbo Boost technology, I think this is a very beneficial feature that you should take advantage of for database server usage. I don’t see any controversy here (such as with hyper-threading). Since Microsoft changed over to core-based licensing for SQL Server 2012, it is much less practical to choose an AMD processor (especially for an OLTP workload) because of their high physical core counts and low single-threaded performance.

One scenario where an AMD-based database server could make some sense would be for a dedicated OLAP server, using SQL Server 2012 Business Intelligence Edition, with server-based licensing. Having lots of physical cores without having to pay a huge amount for your SQL Server 2012 licenses is not a bad scenario.

A SQL Server Hardware Tidbit a Day – Day 28

For Day 28 of this series, we are going to talk about some factors to consider if you are thinking about building a desktop SQL Server 2012 system for development or testing use. I get lots of questions about this subject, and I have been thinking about it some anyway, hence today’s topic.

In many organizations, old retired rack-mounted servers are repurposed as development and test servers. Sometimes, old retired workstations are used for this purpose. Quite often, these old machines are three to five years old (or even older). For example, you will often find old Dell PowerEdge 1850, PowerEdge 6850, and PowerEdge 1950 servers being used for this purpose. These vintage machines are about four to seven years old, and long out of warranty. Their performance and scalability is quite miserable by today’s standards, even compared to a modern desktop.

For example, a Dell PowerEdge 1850, with two Intel Xeon Irwindale 3.0GHz processors and 8GB of RAM has a 32-bit Geekbench score of about 2250. A Dell PowerEdge 6800 with four Xeon 7140M 3.4GHz processors and 64GB of RAM has a 32-bit Geekbench score of 5023. A newer Dell PowerEdge 1950 with two Intel Xeon 5440 processors and 32GB of RAM will have a 32-bit Geekbench score of about 7500. For comparison, my current main workstation has a 22nm Intel Core i7-3770K processor with 32GB of RAM and a 512GB OCZ Vertex 4 SSD. This system has a 32-bit Geekbench score of 12713.

My argument is that in many situations, given a very limited hardware budget, it may make more sense (for development and testing) to build or buy a new desktop system based on a modern platform rather that using relatively ancient “real” server hardware. Your main limiting factors with a new desktop system will be I/O capacity (throughput and IOPS) and memory capacity, but there are some ways around that..  You should be able to build or buy a very capable test system for less than $1500.00, perhaps far less, depending on how you configure it.

Your two main good choices right now are a 22nm Core i7 Ivy Bridge (using a Core i7-3770 or i7-3770K processor) with an Z77 chipset-based motherboard, or a slightly less expensive Core i5-3570 or i5-3570K processor. The Core i7 will have four cores plus hyper-threading, while the Core i5 will have four cores, but no hyper-threading. Either one of these systems will support up to 32GB of RAM, which is how much you should get (since desktop DDR3 RAM is so affordable).

You need to look at the motherboard features and specifications closely to make sure you get what you need without paying too much for unnecessary features. You want to get a motherboard that has as many SATA ports as possible (preferably newer 6Gbps SATA III ports) with hardware RAID support if possible. At the same time, you don’t really need the premium gaming (such as SLI or Crossfire support) and over-clocking features in a top-of-the line motherboard. The entry level motherboards will usually have fewer SATA ports, which is a good reason to go a little higher in the lineup. You can also buy inexpensive PCI-e SATA III expansion cards to add even more SATA ports. You also want to make sure to get a motherboard with four memory slots, since some entry-level motherboards will only have two slots.

Depending on your motherboard vendor, you might run into driver issues with Windows Server 2012. The problem is not that there are no drivers, but the fact that the motherboard vendors sometimes wrap the actual driver installation programs in their own installation programs that do OS version checking that fails with Windows Server 2012 (since they assume you will be using Windows 7 or Windows 8).

You can buy a large, full tower case, with lots of internal 3.5” drive bays. Then you can buy a number of 1TB Western Digital Black 6Gbps hard drives and/or some consumer grade SSDs, depending on your needs and budget. This will let you have a pretty decent amount of I/O capacity for a relatively low cost. Very fast consumer SSDs are now available for less than $1/GB of space, so you can probably find a way to afford one or more of them for your system.

If you can wait until early to mid June, the 22nm Intel Haswell processors will be available. These will require a new motherboard, but will give you about 5-10% better single-threaded CPU performance at the same clock speed as Ivy Bridge, along with a few other benefits.

A SQL Server Hardware Tidbit a Day – Day 27

For Day 27 of this series, I am going to talk about Power Management and its effect on processor performance. I have written about this subject a couple of times before, here and here. Other people, such as Paul Randal (blog|Twitter) and Brent Ozar (blog|Twitter) have written about this subject here and here.

Power Management is when the clock speed of your processors is reduced (usually by changing the processor multiplier value) in order to use less electrical power when the processor is not under a heavy load. On the surface, this seems like a good idea, since electrical power costs can be pretty significant in a data center. Throttling back a processor can save some electricity and reduce your heat output, which can reduce your cooling costs in a data center. Unfortunately, with some processors, and with some types of SQL Server workloads (particularly OLTP workloads), you will pay a pretty significant performance price (in the range of 20-25%) for those electrical power savings.

When a processor has power management features that are enabled, the clock speed of the processor will vary based on the load the processor is experiencing. You can watch this in near real-time with a tool like CPU-Z, that displays the current clock speed of Core 0. The performance problem comes from the fact that some processors don’t seem to react fast enough to an increase in load to give their full performance potential, particularly for very short OLTP queries that often execute in a few milliseconds.

This problem seems to show up especially with Intel Xeon 5500, 7500 (Nehalem-EP and EX), Intel Xeon 5600, E7 series processors (Westmere-EP and EX families) and with the AMD Opteron 6100, 6200, and 6300 series (Magny Cours, Bulldozer and Piledriver families). Much older processors don’t have any power management features, and some slightly older processors (such as the Intel Xeon 5300 and 5400 series) seem to handle power management slightly better. I have also noticed that the Intel Sandy Bridge-EP processors seem to handle power management a little better than the Nehalem and Westmere did, i.e. they don’t show as noticeable of a performance decrease when power management is enabled.

Basically, you have two types of power management that you need to be aware of as a database professional. The first type is hardware-based power management, where the main system BIOS of a server is set to allow the processors to manage their own power states, based on the load they are seeing from the operating system. The second type is software-based power management, where the operating system (with Windows Server 2008 and above) is in charge of power management using one of the standard Windows Power Plans, or a customized version of one of those plans. When you install Windows Server 2008 or above, Windows will be using the Balanced Power Plan by default. When you are using the Balanced Power Plan, Intel processors that have Turbo Boost Technology will not use Turbo Boost (meaning that they will not temporarily overclock individual processor cores for more performance).

So, after all of this, what do I recommend you do for your database server? First, check your Windows Power Plan setting, and make sure you are using the High Performance Power Plan. This can be changed dynamically without a restart. Next, run CPU-Z, and make sure your processor is running at or above its rated speed. If it is running at less than its rated speed with the High Performance Power Plan, that means that you have hardware power management overriding what Windows has asked for. That means you are going to have to restart your server (in your next maintenance window) and go into your BIOS settings and either disable power management or set it to OS control (which I prefer).

A SQL Server Hardware Tidbit a Day – Day 26

For Day 26 of this series, I want to talk a little about laptop processor selection (since I get a lot of questions about it).  Many DBAs, Developers, and consultants use laptop computers as their primary workstations for working with SQL Server. Even more than an actual database server, you are pretty much stuck with the processor that you initially buy in a laptop (unless you are pretty brave and willing to do some major surgery on the laptop).

Having the “right” processor for your needs is very important in a laptop. Making the wrong choice could mean that you have a lot less processing power or a lot less battery life than you expect. Unfortunately, you cannot usually rely on the sales clerk at Best Buy to give you good advice about which processor to pick for your new laptop.

If you need a new laptop right now (April 2013) you want a 22nm Intel Ivy Bridge processor in your laptop. In most cases, I would recommend a Core i7 model, such as a Core i7-3840QM that has four-cores plus hyper-threading (assuming that you want a larger, desktop-replacement type of laptop). If you are looking at an Ultrabook form factor, you will be stuck with a low-voltage processor such as a Core i7-3537U processor, which has two-cores plus hyper-threading. The U suffix on the processor model number is the giveaway that you are looking at a low-voltage processor, which will give you better battery life but much lower performance.

If you can wait until early June 2013, you should start seeing new laptops with the 22nm Intel Haswell processor. Haswell will have about 5-10% better processor performance at the same clock-speed, but much better integrated graphics performance and much better battery life than Ivy Bridge.

For some comparison results, the Geekbench blog has a post with a number of results for some different models of the MacBook Pro. You can use this to get a rough idea of how much better an Ivy Bridge based machine (Mac or PC) will perform compared to various older processors.

Another important benefit you get with a new Intel Ivy Bridge machine is native 6Gbps SATA III support, which means that you can take advantage of the fastest 6Gbps SSDs. You will also get USB 3.0 ports, which are a huge improvement over USB 2.0 ports (which are usually limited to about 25-30MB/sec throughput).

A SQL Server Hardware Tidbit a Day – Day 25

For Day 24 of this series, I want to talk about the recent history of Dell rack-mounted servers, to help illustrate how processor performance and server capacity has dramatically improved over the past seven years.

Back in 2005-2006, you could buy a two-socket Dell PowerEdge 1850, with two hyper-threaded Intel Xeon “Irwindale” 3.2GHz processors and 16GB of RAM (with a total of four logical cores). This was fine for an application or web server, but it did not have the CPU horsepower (the 32-bit Geekbench score was about 2200) or memory capacity for a heavy duty database workload.

Around the same time, you could also buy a four-socket Dell PowerEdge 6850, with four dual-core, Intel Xeon 7040 “Paxville” 3.0GHz processors and 64GB of RAM (with a total of 16 logical cores with hyper-threading enabled). This was a much better choice for a database server because of the additional processor, memory, and I/O capacity compared to a PowerEdge 1850. Even so, its Geekbench score was only about 4400, which is pretty pathetic by today’s standards. Back in 2006-2007, it still made perfect sense to buy a four-socket database server for most database server workloads.

By late 2007, you could buy a two-socket Dell PowerEdge 1950, with two, quad-core Intel Xeon E5450 processors and 32GB of RAM (with a total of eight logical cores) and you would actually have a pretty powerful platform for a database server. A system like this would have a 32-bit Geekbench score of about 8000. The biggest weakness of this system was having only two x8 PCI-E 1.0 expansion slots.

By late 2008, you could buy a four-socket Dell PowerEdge R900, with four, six-core Intel Xeon X7460 processors and 256GB of RAM (with a total of of 24 logical cores). This was a very powerful , but costly platform for a database server, with a 32-bit Geekbench score of around 16500. There are still many of these model servers being used for production purposes, and while they sound impressive, that are actually a very bad choice for an upgrade to SQL Server 2012 because of their high physical core counts and low single-threaded performance. The Xeon X7460 was the last generation of Intel SMP processors, before the NUMA-capable Nehalem was introduced.

By early 2009, you could buy a two-socket Dell PowerEdge R710, with two, quad-core Intel Xeon X5570 processors, and 144GB of RAM (with a total of 16 logical cores) and you would have a very powerful database server platform. This system would have a 32-bit Geekbench score of around 15000. This would give you fairly close to the capacity of a four-socket R900, with better single-threaded performance.

By early 2010, you could buy that same Dell PowerEdge R710, with more powerful six-core Intel Xeon X5680 processors (with a total of 24 logical cores), and push the 32-bit Geekbench score to about 22500. This gives you quite a bit more CPU capacity than the PowerEdge R900 that you bought in late 2008. If you are concerned about 144GB of RAM not being enough memory in the R710, you could buy two R710s, and have nearly triple the CPU capacity of a single R900. This assumes that you can split your database workload between two database servers, by moving databases or doing things like vertical or horizontal partitioning of an existing large database.

Finally, by mid-2012, you could buy a 12th generation, Dell PowerEdge R720, with even faster eight-core Intel Xeon E5-2690 processors (with a total of 32 logical cores), which would push the 32-bit Geekbench score to about 29000.  The R720 has 24 memory slots, so you can have 384GB of RAM with 16GB DIMMs or 768 GB of RAM with more expensive 32GB DIMMs. You also get seven PCI-E 3.0 expansion slots, which gives you more potential I/O bandwidth than you can get with a four-socket server (since they are still using the older PCI-E 2.0 standard).

This gap will open up even more in Q3 of 2013, when the 12-core, 22nm Intel Xeon E5-2600 v2 series (Ivy Bridge-EP) processors are released. These will be pin-compatible with the current E5-2600 series, so they will work with current model servers (probably requiring a BIOS update). They should be available very quickly after Intel releases them.

This overall trend has been continuing over the past several years, with Intel introducing new processors in the two socket space roughly a year ahead of introducing a roughly equivalent new processor in the four socket space. This means that you will get much better single-threaded OLTP performance from a two-socket system than from a four-socket system of the same age (as long as your I/O subsystem is up to par).

Given the choice, I would rather have two, two-socket machines instead of one, four-socket machines in almost all cases. The only big exception would be a case where you absolutely need to have far more memory in a single server that you can get in a two socket machine (a Dell PowerEdge R720 can now go up to 768GB if you are willing to pay for 32GB DIMMs), and you are unable to do any re-engineering to split up your load between two servers.

If you want to dive deeper into this subject, you might want to listen to my latest Pluralsight course, which is SQL Server 2012:Evaluating and Sizing Hardware. You can also contact us if you are interested in expert hardware consulting as you get ready to upgrade your database hardware.

A SQL Server Hardware Tidbit a Day – Day 24

For Day 24 of this series, I want to talk a little about some things to consider as you make the decision whether to purchase a two-socket database server or a four- socket database server. Traditionally, it was very common to use a four-socket machine for most database server scenarios, while two-socket servers were most often used for web servers or application servers. With the advances in in new processors and the improvements in memory density of the past four to five years, you may want to reconsider that conventional wisdom.

Historically, two-socket database servers simply did not have enough processor capacity, memory capacity, or I/O capacity to handle many more demanding database workloads. Back in 2007, a two-socket server would typically have been limited to about eight processor cores, 32GB of RAM, and two or three PCI-E 1.0 or 2.0 expansion slots, which made it much more challenging to run a large database workload on a two-socket server in the past.

Processors have gotten far more powerful in the last few years, and memory density has gone up dramatically. Modern two-socket servers have 24 memory slots, which means that you can have 384GB of RAM with affordable 16GB DDR3 DIMMs or 768GB of RAM with more expensive 32GB DDR3 DIMMs. The price/GB of 32GB memory modules is still about $39/GB compared to about $13/GB for 16GB memory modules, but the prices for the larger modules has fallen 25% in the last two months.

It is also possible to get much more I/O capacity connected to a two-socket server than it was a few years ago. The latest generation, two-socket servers that use the Intel Xeon E5-2600 series processor can have six or seven PCI-E 3.0 expansion slots, that each have twice the bandwidth of the older PCI-E 2.0 standard.

Because of how the way that the Intel Tick-Tock processor release strategy works, two-socket servers get the latest processor microarchitectures and manufacturing process technology releases significantly sooner than when these same advances show up in the four-socket space. Right now, two-socket servers have the 32nm Sandy Bridge-EP, while four-socket servers are still using the older 32nm Westmere-EX that has higher core counts but lower single-threaded processor performance.

This performance gap will be even wider in Q3 of 2013, when the upcoming 22nm 12-core Ivy Bridge-EP is released. Four-socket servers will finally get caught up somewhat in Q4 of 2013, when the 22nm 15-core Ivy Bridge-EX is released but Ivy Bridge-EX  will still have higher core counts and lower single-threaded processor performance than Ivy Bridge-EP. The gap will open up again, probably in early 2015, when Haswell-EP is released.

The final reason to think about this issue is the cost of SQL Server 2012 core licenses. If you can run your workload on a two-socket server instead of a four-socket server, you can save over 50% on your SQL Server core-based license costs, which can be a very substantial savings! Even with SQL Server 2012 Standard Edition licenses, the license cost savings would pay for a very capable two-socket database server (exclusive of the I/O subsystem).