วิธีเพิ่มหน่วยความจำ SQL Server


9

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


2
คุณmin server memoryและmax server memory การตั้งค่าคืออะไร? เมื่อ SQL Server ขอสงวนขั้นต่ำที่คุณระบุไว้มันจะไม่ปล่อยจนกว่าคุณจะเปลี่ยนการตั้งค่าหรือการตีกลับอินสแตนซ์ ดังที่เจมส์ตั้งข้อสังเกตถ้ามันสำรองมากกว่าขั้นต่ำที่คุณระบุไว้ในทางทฤษฎีควรปล่อยมันเมื่อมันไม่ต้องการมันและมีแรงกดดันหน่วยความจำบนเครื่อง
Nick Chammas

@Nick: หน่วยความจำเซิร์ฟเวอร์ขั้นต่ำ: 0 (MB); หน่วยความจำเซิร์ฟเวอร์สูงสุด: 600 (MB)
jrara

คำตอบ:


13

หยุด / เริ่มบริการไม่มีอะไรจะปล่อยหน่วยความจำกลับไปที่ระบบปฏิบัติการ

เห็นได้ชัดว่าไม่ใช่สิ่งที่คุณต้องการทำกับเซิร์ฟเวอร์การดำเนินงาน แต่สมเหตุสมผลอย่างสมบูรณ์แบบสำหรับกล่องแซนด์บ็อกซ์ในท้องถิ่น ด้วยอินสแตนซ์ 3 แบบที่แตกต่างกันบนแล็ปท็อปของฉันมันเป็นวิธีเดียวที่ทำงานได้

แก้ไขความคิดเห็นของ @ Nick ต่อไปนี้

ดังที่เจมส์ตั้งข้อสังเกตถ้ามันสำรองมากกว่าขั้นต่ำที่คุณระบุไว้ในทางทฤษฎีควรปล่อยมันเมื่อมันไม่ต้องการมันและมีแรงกดดันหน่วยความจำบนเครื่อง

คำจำกัดความของ "ไม่ต้องการ" คืออะไร? เมื่อบัฟเฟอร์พูลเต็มแล้วจะไม่ปล่อยหน้าออกไปจนกว่าจะกลายเป็นหน้าไม่พอใจโดยหน้าอื่น ๆ ที่ถูกนำเข้ามาหากคุณต้องการให้หน่วยความจำกลับมาทันทีเช่นกรณีที่ @jrara คุณต้องหยุด / เริ่มต้น


2
ตาม Microsoft : "ภายใต้ Windows Server 2003, SQL Server ใช้ API การแจ้งเตือนหน่วยความจำQueryMemoryResourceNotificationเพื่อตรวจสอบว่าเมื่อบัฟเฟอร์พูลอาจจัดสรรหน่วยความจำและปล่อยหน่วยความจำ" ดังนั้นหากคุณกังวลเกี่ยวกับการหิวแอพอื่น ๆ ที่อาจต้องใช้หน่วยความจำมากกว่านี้ SQL Server ในทางทฤษฎีจะปล่อยหน่วยความจำที่ไม่จำเป็นเมื่อ Windows บอกกับมัน เหตุผลเดียวที่คุณควรบังคับให้รีลีสโดยเริ่มต้นอินสแตนซ์ใหม่คือถ้ากลไกนี้ไม่ทำงานตามที่ออกแบบไว้หรือการตั้งค่าหน่วยความจำต่ำสุด / สูงสุดของคุณไม่ถูกต้อง
Nick Chammas

บทความmsdnอื่นที่มีประโยชน์เพื่อชี้แจงเกี่ยวกับmsdn.microsoft.com/en-us/library/ms178145.aspxนี้ ตราบใดที่ SQL Server มาถึงการตั้งค่าหน่วยความจำของเซิร์ฟเวอร์ต่ำสุดมันจะปล่อยหน่วยความจำเพื่อตอบสนองต่อการแจ้งเตือนหน่วยความจำเหลือน้อยจากระบบปฏิบัติการ จากประสบการณ์ของผมมันค่อนข้างจะสุดขั้วสำหรับสิ่งนี้ที่จะเกิดขึ้น
georgeb

แม่นยำ @georgeb_dba มันจะไม่ยอมแพ้ทันที ดังนั้นหยุด / เริ่มและรับคืนหน่วยความจำของแล็ปท็อปของคุณทันที
Mark Storey-Smith

4
DBCC FREESYSTEMCACHE ('ALL') 
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE 

จะเพิ่มสระว่ายน้ำ

https://msdn.microsoft.com/en-us/library/ms178529.aspx

หมายเหตุ

การดำเนินการ DBCC FREESYSTEMCACHE จะล้างแคชแผนสำหรับอินสแตนซ์ของ SQL Server การล้างแคชแผนทำให้การคอมไพล์ใหม่ของแผนการดำเนินการที่ตามมาทั้งหมดและอาจทำให้ประสิทธิภาพการสืบค้นลดลงอย่างฉับพลันและชั่วคราว สำหรับแต่ละ cachstore ที่ล้างในแคชแผนบันทึกข้อผิดพลาดของ SQL Server จะมีข้อความให้ข้อมูลต่อไปนี้: "SQL Server พบ% d เกิดขึ้นของ cachestore flush สำหรับ cachestore '% s' (ส่วนหนึ่งของแผนแคช) เนื่องจาก การดำเนินการ 'DBCC FREEPROCCACHE' หรือ 'DBCC FREESYSTEMCACHE' " ข้อความนี้ถูกบันทึกทุก ๆ ห้านาทีตราบเท่าที่แคชถูกลบทิ้งภายในช่วงเวลานั้น


1
ค่อนข้างแน่ใจว่านี่จะไม่ลดจำนวนหน่วยความจำที่ SQL ได้สำรองไว้ในระดับระบบปฏิบัติการจริง ๆ
Greg

3

มันจะยกเลิกหน่วยความจำที่ไม่ได้ใช้โดยอัตโนมัติเมื่อแอพอื่นพยายามส่ง

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