Stay organized with collections Save and categorize content based on your preferences.
This document explains how to review and optimize a Cloud SQL for SQL Server instance if that instance is identified by the underprovisioned instance recommender as having high memory consumption.
SQL Server memorySQL Server memory can be divided into the following:
CachesThese are objects on a disk that can be reloaded, such as database pages and stored procedures. As a result, the SQL Server can grow and shrink these objects based on memory utilization. Caches include buffer pools and plan caches.
Fixed memoryFixed memory can grow and shrink. It only shrinks when not in use; for example, when the number of connections drops or the number of queries executing decreases. It's different from caches. If there is not enough fixed memory, SQL Server can run out of memory. Fixed memory includes connection memory and memory grants.
SQL Server overheadSQL Server overhead includes threads and stacks.
In-Memory OLTPIn-Memory OLTP includes In-Memory tables and In-Memory filegroups.
The memory consumption by SQL Server is controlled by setting maximum server memory
and memory.memory.limitmb
. The memory.memory.limitmb
parameter is set by Cloud SQL automatically.
To learn more about memory.memory.limitmb
, see the Microsoft documentation.
To determine if an instance needs more memory tuning, do the following:
max server memory (mb)
flag.
We recommend you let Cloud SQL manage the value of this flag. If you must manually manage this value, use the max_server_memory (mb)
usage formula outlined on Best practices to help prevent SQL Server from consuming all memory.
For more information, see Special flags.
Page life expectancy
flag.
Page life expectancy
indicates the amount of time, in seconds, that the oldest page stays in the buffer pool. This value should be more than 300 as recommended by Microsoft. If it consistently falls under 300, it could be an indication that the instance is facing high memory utilization. Run the following query to monitor Page life expectancy
.
SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE '%Manager%' AND [counter_name] = 'Page life expectancy'
Memory Grants Pending
flag.
Memory Grants Pending
specifies the total number of processes waiting for a workspace memory grant. Run the following query to check Memory Grants Pending
. If this query consistently shows grants pending, then it indicates high memory utilization. You can reduce it by querying the database waits and tuning any statement that's waiting on memory.
SELECT @@SERVERNAME AS [Server Name], RTRIM([object_name]) AS [Object Name], cntr_value AS [Memory Grants Pending] FROM sys.dm_os_performance_counters WITH(NOLOCK) WHERE [object_name] LIKE N'%Memory Manager%' -- Handles named instances AND counter_name = N'Memory Grants Pending'
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4