ค้นหาฐานข้อมูลใดใน SQL Server 2005 ใช้ RAM เท่าใด


12

เพื่อนของฉันคนหนึ่งถามฉันในวันนี้ (พยายามที่จะลดความกังวลใจของลูกค้าของเขา) คุณจะรู้ได้อย่างไรใน SQL Server 2005 ว่าฐานข้อมูลใดใช้หน่วยความจำเท่าใด (ใน RAM ของเซิร์ฟเวอร์) ในเวลาใดก็ตาม

เป็นไปได้หรือไม่ ถ้าเป็นเช่นนั้นได้อย่างไร คุณสามารถทำได้ด้วยเครื่องมือ SQL Server ในตัวหรือคุณต้องการตัวเลือกบุคคลที่สามเพิ่มเติมหรือไม่

ลูกค้าของเขาทุกคนสับสนเพราะเครื่อง SQL Server ของเขานั้นใช้ RAM ทั้งหมดเพียง 200KB จาก 4 GB ฉันไม่คิดว่านี่เป็นปัญหาจริง ๆ - แต่เนื่องจากผู้ชายคนนี้อ้างว่ามันเกิดขึ้นมากหรือน้อยข้ามคืนเขาต้องการที่จะรู้ว่าอะไรทำให้การใช้หน่วยความจำเพิ่มขึ้น .....

มาร์ค

คำตอบ:


25

มันน่าจะเกิดจากแบบสอบถามที่ต้องการอ่านหน้าเพิ่มเติมในพูลบัฟเฟอร์และพูลบัฟเฟอร์ดึงหน่วยความจำเพิ่มเติมเพื่อรองรับ นี่คือวิธีที่ SQL Server ควรทำงาน หากกล่องนั้นเกิดแรงกดดันต่อหน่วยความจำก็จะขอให้ SQL Server เลิกใช้หน่วยความจำบางส่วนซึ่งจะทำ ลูกค้าไม่ควรกังวล

คุณสามารถใช้ DMV sys.dm_os_buffer_descriptorsเพื่อดูจำนวนหน่วยความจำบัฟเฟอร์พูลที่ใช้โดยฐานข้อมูลใด ตัวอย่างนี้จะบอกคุณว่าหน้าสะอาดและสกปรก (แก้ไขตั้งแต่จุดตรวจสอบล่าสุดหรืออ่านจากดิสก์) จากแต่ละฐานข้อมูลอยู่ในบัฟเฟอร์พูล คุณสามารถแก้ไขเพิ่มเติมได้

SELECT
   (CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
   (CASE WHEN ([database_id] = 32767) THEN 'Resource Database' ELSE DB_NAME (database_id) END) AS 'Database Name',
   COUNT (*) AS 'Page Count'
FROM sys.dm_os_buffer_descriptors
   GROUP BY [database_id], [is_modified]
   ORDER BY [database_id], [is_modified];
GO

ฉันอธิบายสิ่งนี้เพิ่มเติมในโพสต์บล็อกนี้ภายในเครื่องมือจัดเก็บ: มีอะไรในพูลบัฟเฟอร์

คุณสามารถเช็คเอาต์ KB 907877 ( วิธีใช้คำสั่ง DBCC MEMORYSTATUS เพื่อตรวจสอบการใช้งานหน่วยความจำใน SQL Server 2005 ) ซึ่งจะทำให้คุณทราบถึงการแบ่งการใช้หน่วยความจำของ SQL Server ที่เหลือ (แต่ไม่ใช่สำหรับแต่ละฐานข้อมูล)

หวังว่านี่จะช่วยได้!


คุณเป็นอัจฉริยะพอล!
marc_s

2

เพื่อนของคุณสามารถ จำกัด จำนวน RAM ที่ SQL จะใช้เพราะพอลกล่าวข้างต้น SQL จะใช้หน่วยความจำทุกบิตเท่าที่จะทำได้

จำกัด จำนวนหน่วยความจำที่ดำเนินการโดย SQL Server ถึง 2000 Mb (หรือสิ่งที่คุณคิดว่าดีที่สุด)

--Enable advanced options:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

--Set the maximum amount of memory to 2000 MB:
USE master
EXEC sp_configure 'max server memory (MB)', 2000
RECONFIGURE WITH OVERRIDE

--Display the newly set configuration:
USE master
EXEC sp_configure 'max server memory (MB)'

--Set 'show advanced options' back to default:
USE master
EXEC sp_configure 'show advanced options', 0 
RECONFIGURE WITH OVERRIDE

ขอบคุณ - ฉันทราบวิธี จำกัด หน่วยความจำ แต่ฉันไม่ทราบวิธีหา db ตัวใดที่ใช้หน่วยความจำพูลบัฟเฟอร์ในเวลาใดก็ตาม
marc_s
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.