Microsoft distributes Microsoft SQL Server 2008 R2 Service Pack 1 fixes as one downloadable file. Because the fixes are cumulative, each new release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 Service Pack 1 fix release.
Symptoms
After you upgrade from Microsoft SQL Server 2008 to Microsoft SQL Server 2008 R2, you may notice that performance decreases when you run a query that uses parallelism in the query execution plan in SQL Server 2008 R2.
Note If you check the query plan, you see that there are more Recursive Hash Join operations than there were in SQL Server 2008. Additionally, the larger the degree of parallelism (DOP) number that is used in the query, the larger the number of Recursive Hash Join operations that are used in the query plan.Cause
This issue occurs because of some changes in the cardinality estimate. If the actual memory usage hovers around the memory limit, a small change in the cardinality estimate might trigger spills.
Note This issue more frequently occurs when you use a larger DOP number in a query.Resolution
After you apply the hotfix, the hash join partition count that depends on memory availability is limited. However, this fix cannot resolve the issue in all situations.
Cumulative update information
SQL Server 2008 R2 Service Pack 2
The fix for this issue was first released in Cumulative Update 3. For more information about how to obtain this cumulative update package for SQL Server 2008 R2 Service Pack 2, click the following article number to view the article in the Microsoft Knowledge Base:
2754552 Cumulative update package 3 for SQL Server 2008 R2 Service Pack 2 Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 Service Pack 2 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2730301 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 2 was released
SQL Server 2008 R2 Service Pack 1
The fix for this issue was first released in Cumulative Update 8. For more information about how to obtain this cumulative update package for SQL Server 2008 R2 Service Pack 1, click the following article number to view the article in the Microsoft Knowledge Base:
2723743 Cumulative update package 8 for SQL Server 2008 R2 Service Pack 1Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 Service Pack 1 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2567616 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 1 was released
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Workaround
To work around this issue, decrease the DOP number in order to decrease Recursive Hash Join operations. However, this may cause the query optimizer to use serial execution, and the cost for the serial execution is high.
More Information
For more information about hash joins, go to the following Microsoft Developer Network (MSDN) website:
Understanding hash joinsFor more information about SQL server memory grant, go to the following MSDN Blogs website: