You may experience slow performance in SQL Server 2012. When you check SQL Server Performance Monitor tools, you see the following:
- A rapid decline in the SQLServer:Buffer Manager\Page life expectancy performance counter values. When this issue occurs, the counter is near 0.
- The peak value of the SQL Server: Buffer manager\LazyWrites/sec counter is more than 1 for several seconds.
- An increase in the SQLServer:Memory Manager\Free Memory (KB) performance counter values.
The resource monitor and lazy writer activities in SQL Server are designed to maintain cache sizes and free list capacities to avoid memory shortage situations. Under rare circumstances, the memory manager in the SQL Server database engine may enable the SHRINK state for the Buffer Pool for longer than required. When approaching the memory target, a sudden burst of memory allocations may cause memory allocation failures and internal retries. During the retry activities, the memory manager can enable SHRINK states on the various caches in order to support the new memory requests. Under these retries there is a small window in which the SHRINK state may remain enabled longer than necessary to restore the free list capacities.
This causes a temporary release of more memory than is required to return to a steady state. For example, the buffer pool can release more data pages than required, inflating the free list depths and reducing the page life expectancy (PLE) for the buffer pool. In this situation, you'll notice a quick decline in the SQLServer:Buffer Manager\Page life expectancy
performance counter values and a quick increase in SQLServer:Memory Manager\Free Memory (KB)
performance counter values.
Cumulative Update 4 for SQL Server 2012 SP1
The fix for this issue was first released in Cumulative Update 4. For more information about how to obtain this cumulative update package for SQL Server 2012 SP1, click the following article number to go to the article in the Microsoft Knowledge Base:
Cumulative update 4 for SQL Server 2012 SP1
Given that 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 2012 SP1 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 go to the article in the Microsoft Knowledge Base:
The SQL Server 2012 builds that were released after SQL Server 2012 Service Pack 1 was released
The memory manager uses several monitoring indicators and will quickly detect that the SHRINK is no longer needed. After the SHRINK is disabled, the buffer pool can grow again. This restores performance and page life expectancy to the intended targets.
However, we recommend that you install this hotfix as soon as possible. Although the problem is short-lived, it may occur again. Additionally, the decrease in performance may be severe when the issue occurs.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
For more information about the Incremental Servicing Model for SQL Server, click the following article number to go to the article in the Microsoft Knowledge Base:
An Incremental Servicing Model is available from the SQL Server team to deliver hotfixes for reported problems
For more information about the naming schema for SQL Server updates, click the following article number to go to the article in the Microsoft Knowledge Base:
Naming schema for Microsoft SQL Server software update packages
For more information about software update terminology, click the following article number to go to the article in the Microsoft Knowledge Base:
Description of the standard terminology that is used to describe Microsoft software updates