監視記憶體使用量

定期監視 SQL Server 執行個體,以確認記憶體使用量是在正常範圍內。

若要監視低記憶體的狀況,請使用以下物件計數器:

  • Memory:Available Bytes

  • Memory:Pages/sec

Available Bytes 計數器代表目前有多少記憶體位元組可供處理序使用。 Pages/sec 計數器會顯示由於硬體分頁錯誤而自磁碟取出,或由於分頁錯誤而寫入磁碟,以釋出工作集內空間的分頁數。

Available Bytes 計數器的數值偏低,代表電腦整體地缺乏記憶體,或有某個應用程式沒有釋出記憶體。 Pages/sec 計數器數值過高可能代表過度分頁。 監視 Memory:Page Faults/sec 計數器可確認磁碟活動並非由分頁所造成。

分頁率 (連同分頁錯誤) 低是正常的,即使有許多可用記憶體的電腦也是如此。 當「Microsoft Windows 虛擬記憶體管理員 (VMM)」修剪 SQL Server 和其他處理序的工作集大小時,它會從這些處理序取得分頁。 此 VMM 活動會造成分頁錯誤。 若要判斷 SQL Server 或其他處理序是否為過度分頁的原因,可監視 Process:Page Faults/sec 計數器 (針對 SQL Server 處理序執行個體)。

如需有關解決過度分頁的詳細資訊,請參閱 Windows 作業系統文件。

隔離 SQL Server 所使用的記憶體

根據預設,SQL Server 會根據可用的系統資源,動態變更它的記憶體需求。 如果 SQL Server 需要更多記憶體,它將詢問作業系統以判斷是否有可用的實體記憶體,並使用可用的記憶體。 如果 SQL Server 並不需要目前配置給它的記憶體,它會釋出記憶體給作業系統。 不過,您可以使用 min server memorymax server memory 伺服器組態選項,覆寫選項以動態使用記憶體。 如需詳細資訊,請參閱<伺服器記憶體選項>。

若要監視 SQL Server 所使用的記憶體數量,請檢查下列效能計數器:

  • Process:Working Set

  • SQL Server:Buffer Manager:Buffer Cache Hit Ratio

  • SQL Server:Buffer Manager:Database Pages

  • SQL Server:Memory Manager:Total Server Memory (KB)

Working Set 計數器顯示處理序使用的記憶體數量。 如果這個數字一直低於**「最小伺服器記憶體」「最大伺服器記憶體」**伺服器選項設定的記憶體數量,則代表 SQL Server 設定的記憶體過多。

Buffer Cache Hit Ratio 計數器專供應用程式使用。 不過,其數值最好為 90% 或更高。 請持續增加記憶體,直到該數值持續大於 90%。 數值大於 90% 代表有超過 90% 的資料要求,可自資料快取中得到所需的資料。

Total Server Memory (KB) 計數器和電腦中的實體記憶體數量相比一直很高,可能代表需要更多的記憶體。

判斷目前記憶體配置

下列查詢會傳回目前配置之記憶體的資訊。

SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;