本文說明如何檢查及最佳化 SQL Server 適用的 Cloud SQL 執行個體。如果資源不足的執行個體建議工具指出該執行個體記憶體用量偏高,請按照本文操作。
SQL Server 記憶體
SQL Server 記憶體可分為下列幾種:
快取
這些是磁碟上的物件,可以重新載入,例如資料庫頁面和預存程序。因此,SQL Server 可以根據記憶體用量擴大及縮小這些物件。快取包括緩衝區集區和計畫快取。
固定記憶體
固定記憶體可擴增或縮減。只有在未使用時才會縮減,例如連線數減少或執行的查詢數減少時。 與快取不同。如果固定記憶體不足,SQL Server 可能會耗盡記憶體。 固定記憶體包括連線記憶體和記憶體授權。
SQL Server 負荷
SQL Server 負荷包括執行緒和堆疊。
記憶體內 OLTP
記憶體內 OLTP 包含記憶體內資料表和記憶體內檔案群組。
SQL Server 的記憶體用量是由 maximum server memory
和 memory.memory.limitmb
設定控制。memory.memory.limitmb
參數是由 Cloud SQL 自動設定。
如要進一步瞭解 memory.memory.limitmb
,請參閱 Microsoft 說明文件。
記憶體最佳化選項
如要判斷執行個體是否需要更多記憶體調整,請執行下列操作:
- 檢查
max server memory (mb)
旗標的值。建議您讓 Cloud SQL 管理這個旗標的值。 如要手動管理這個值,請使用「最佳做法」中列出的
max_server_memory (mb)
用量公式,避免 SQL Server 耗用所有記憶體。詳情請參閱「特殊旗標」。
- 監控
Page life expectancy
旗標。Page life expectancy
表示最舊頁面在緩衝區集區停留的時間長度 (以秒為單位)。 建議您將這個值設為大於 300。如果持續低於 300,可能表示執行個體的記憶體使用率偏高。執行下列查詢來監控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
標記。Memory Grants Pending
指定等待工作區記憶體授權的程序總數。 執行下列查詢來檢查Memory Grants Pending
。如果這項查詢持續顯示授權待處理, 則表示記憶體使用率偏高。如要減少這類情況,請查詢資料庫等待時間,並調整等待記憶體的任何陳述式。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'