ฉันได้คำจำกัดความด้านล่างจาก Bob Dorr เกี่ยวกับหน่วยความจำเซิร์ฟเวอร์ Max ในการควบคุม SQL Server 2012 นอกจากนี้คุณยังสามารถอ่านหนังสือออนไลน์เพื่อรับรายละเอียดเพิ่มเติม
หน่วยความจำเซิร์ฟเวอร์สูงสุดควบคุมการจัดสรรหน่วยความจำของ SQL Server รวมถึงบัฟเฟอร์พูลหน่วยความจำคอมไพล์แคชทั้งหมดหน่วยความจำ qe หน่วยความจำตัวจัดการล็อกและหน่วยความจำ CLR (โดยทั่วไปคือ "เสมียน" ใด ๆ ที่พบใน dm_os_memory_clerks) หน่วยความจำสำหรับเธรดกองซ้อนหน่วยความจำผู้ให้บริการเซิร์ฟเวอร์ที่เชื่อมโยงนอกเหนือจาก SQL Server หรือหน่วยความจำใด ๆ ที่จัดสรรโดย DLL“ ไม่ใช่เซิร์ฟเวอร์ SQL” จะไม่ถูกควบคุมโดยหน่วยความจำเซิร์ฟเวอร์สูงสุด
หน่วยความจำที่จัดสรรให้กับ thread stack, DLL ของบุคคลที่สาม, ผู้ให้บริการเซิร์ฟเวอร์ที่เชื่อมโยงซึ่งนอกเหนือจาก Microsoft (เช่น MySQL.PostgreSQL ฯลฯ ) หรือ DLL ใด ๆ ที่โหลดในพื้นที่ที่อยู่ SQL Server ซึ่งไม่ใช่ SQL Server จะถูกจัดสรรนอกหน่วยความจำเซิร์ฟเวอร์สูงสุด การดำเนินการสำรองข้อมูล IIRC ใน SQL Server 2012 ยังคงจัดสรรหน่วยความจำภายนอกพูบัฟเฟอร์
คุณใช้เซิร์ฟเวอร์ที่เชื่อมโยงเพื่อสอบถาม RDBMS อื่นหรือไม่ ซอฟต์แวร์อื่นใดที่ติดตั้งบนเครื่อง windows เดียวกัน คุณสามารถโพสต์ตำแหน่งที่แชร์บางตำแหน่งของผลลัพธ์ของแบบสอบถามต่อไปนี้ได้หรือไม่
select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
from sys.dm_os_memory_clerks
group by type
order by [Memory utilized in MB] desc
Go
-------
select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
(locked_page_allocations_kb/1024) locked_page_allocations_MB,
(pages_kb/1024) [memory allocated MB]
from sys.dm_os_memory_nodes
Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go
คุณสามารถอัพโหลดDBCC MMEMORYSTATUS
ผลลัพธ์ทั้งหมดในบางตำแหน่งที่แชร์และโพสต์ลิงค์ได้ที่นี่ สิ่งนี้จะช่วยในการทำความเข้าใจว่าองค์ประกอบใดที่ใช้ความทรงจำ
แก้ไข:ตามเอาต์พุต dbcc memorystatus ฉันสามารถเห็น 2 NUMA nodes และหน่วยความจำที่แต่ละโหนดใช้ประมาณ
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
อีกครั้งถ้าคุณเห็นตัวจัดการหน่วยความจำใน memorystatus เอาท์พุท
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
VM ที่กำหนดไว้เป็นหน่วยความจำเสมือนจริงที่กระทำโดย SQL Server และเนื่องจากหน่วยความจำนี้มีการยืนยันphysical memory backing it
แล้ว อีกครั้งซึ่งทำให้ฉันคิดว่า SQL Server ใช้ 65 G ตามที่กำหนดไว้ในหน่วยความจำเซิร์ฟเวอร์สูงสุด
นี่คือหน่วยความจำเซิร์ฟเวอร์สูงสุด ดังนั้นหน่วยความจำจะถูกกระจายอย่างดีระหว่างทั้งสองโหนดคุณสามารถเพิ่มเอาท์พุทของแบบสอบถาม jut ด้านล่างเพื่อตรวจสอบได้ กรุณาเพิ่มภาพหน้าจอ
SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;
?