การตั้งค่าหน่วยความจำสูงสุดใน SQL Server


11

ฉันใช้ SQL Server 2008 และแอปพลิเคชันบนเว็บบนเซิร์ฟเวอร์เฉพาะเครื่องเดียวมีหน่วยความจำเพียง 2Gb เท่านั้น

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

ในคุณสมบัติเซิร์ฟเวอร์ใน SSMS ภายใต้หน่วยความจำหน่วยความจำเซิร์ฟเวอร์สูงสุด (เป็น Mb) ถูกตั้งค่าเป็น: 2147483647 เซิร์ฟเวอร์ sql

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

นอกจากนี้การเปลี่ยนหมายเลขนี้เป็นเรื่องที่ปลอดภัยหรือไม่ในขณะที่ SQL Server กำลังทำงานอยู่

ขอบคุณสำหรับคำแนะนำ.


2
บทความล่าสุดที่ฉันเขียนเกี่ยวกับหน่วยความจำเกินจริงในเซิร์ฟเวอร์ SQL อาจเป็นประโยชน์สำหรับคุณที่จะอ่าน
Jon Seigel

คำตอบ:


13

ฉันจะตอบคำถามสุดท้ายก่อน: ใช่คุณสามารถเปลี่ยนได้ในขณะที่เซิร์ฟเวอร์ทำงานโดยไม่มีปัญหา หากคุณต้องการเปลี่ยนค่าผ่านทาง SQL คุณสามารถทำได้ด้วยแบบสอบถามต่อไปนี้

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

ดูหน้านี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าหน่วยความจำบนเซิร์ฟเวอร์ SQL


คำถามแรกของคุณน่าเสียดายที่คำตอบคือ: ฉันบอกคุณไม่ได้หรอก

มี 1,000,000 สิ่งที่คุณต้องคำนึงถึงเมื่อจัดสรรหน่วยความจำ ชุดผลลัพธ์มีขนาดใหญ่เพียงใดจากการสืบค้นเรียกใช้บ่อยแค่ไหนแบบสอบถามที่เคยใช้เวลา 20 มิลลิวินาทีจะใช้ได้ 200 มิลลิวินาทีหรือไม่

ค่าเริ่มต้นของ Sql ถือว่าเป็นสิ่งเดียวที่ทำงานบนเซิร์ฟเวอร์ดังนั้นจึงตั้งค่าหน่วยความจำเป็น MAX_VALUE และจะหยุดการเติบโตเมื่อมีการใช้หน่วยความจำที่มีอยู่ทั้งหมด (และในฮาร์ดแวร์เฉพาะที่ใกล้เคียงกับสิ่งที่คุณต้องการเกิดขึ้น (ดูความคิดเห็น Aaronsสำหรับข้อแม้ที่เป็นไปได้)) โดยปกติแล้วเว็บเซิร์ฟเวอร์หรือซอฟต์แวร์อื่น ๆ ที่มีปฏิสัมพันธ์กับฐานข้อมูลจะอยู่บนฮาร์ดแวร์ที่แตกต่างกันซึ่งสื่อสารผ่านเครือข่าย

คุณเพียงแค่ต้องกำหนดเป็นค่าที่คุณคิดว่ามีเหตุผลและถ้าเว็บเซิร์ฟเวอร์ของคุณยังคงมีหน่วยความจำสำลักลดลง ถ้า SQL ไม่ให้ประสิทธิภาพเพียงพอหลังจากที่คุณให้หน่วยความจำกับเว็บเซิร์ฟเวอร์คุณต้องซื้อ ram เพิ่มเติมหรือย้าย SQL ไปยังฮาร์ดแวร์เฉพาะ


2
มีรายงานมีความสุขใน SSMS เกี่ยวกับหน่วยความจำเซิร์ฟเวอร์ SQL เป็น: blogs.msdn.com/b/buckwoody/archive/2007/10/17/...คุณสามารถติดตามซึ่งกินหน่วยความจำมากที่สุดส่วนหนึ่ง
DiGi

1

คุณไม่ควรอนุญาตให้เซิร์ฟเวอร์ sql ใช้หน่วยความจำทั้งหมดในกล่อง .. มันขึ้นอยู่กับสิ่งที่กำลังทำงานอยู่ในกล่องนั้นและจำนวนหน่วยความจำที่มีในกล่อง แต่ฉันมั่นใจเสมอว่าฉันปล่อยหน่วยความจำไว้ 10% สำหรับ O \ S


0

ที่ บริษัท ปัจจุบันของฉันซึ่งฉันจ้างฉันมักจะใช้การตั้งค่าขั้นต่ำและสูงสุดสำหรับ SQL Server สูงสุดหากเซิร์ฟเวอร์ใช้งานกับ SQL Server เท่านั้นฉันจะตั้งค่าในหน่วยความจำสูงสุดเสมอ - 1gb สำหรับระบบปฏิบัติการ ขั้นต่ำในกรณีของเราที่ 2GB

แต่มันได้รับการพิสูจน์สำหรับการติดตั้งของเรา ไม่ใช่ทุกการติดตั้งและการใช้งานเหมือนกันและฉันก็ยังรู้สึกว่าหน่วยความจำไม่ได้ทำในสิ่งที่คุณต้องการเสมอ)

อาจเป็นสิ่งที่รู้จักในกรณีของคุณ แต่ยังดูที่การแลกเปลี่ยนหน่วยความจำ เมื่อคุณมี 2GB บนเซิร์ฟเวอร์และคุณมีระบบปฏิบัติการและ SQL Server ที่ทำงานบน "โหลดสูง" ปริมาณการใช้หน่วยความจำจะสูงเกินไปซึ่งระบบปฏิบัติการจะทำการสลับบางอย่าง ตรวจสอบให้แน่ใจว่าไฟล์เพจจิ้งของคุณไม่ได้อยู่ในไดรฟ์ระบบปฏิบัติการมิฉะนั้นคุณอาจจบลงด้วยระบบที่ติดขัดโดยสิ้นเชิง (เคยอยู่ที่นั่นมาก่อนและไม่ชอบเลย)


-1

ฉันเพิ่งเปลี่ยน "หน่วยความจำเซิร์ฟเวอร์สูงสุด" ในเซิร์ฟเวอร์สดโดยไม่มีปัญหา ดูเหมือนว่าจะตั้งเป็น 2147483647 โดยค่าเริ่มต้นในฐานข้อมูลทั้งหมด (แต่ฉันไม่รู้วิธีการอ่านค่าจาก SQL ก่อนการเปลี่ยนแปลงจริง) ...


-2

ติดกับค่าเริ่มต้นใน 99% ของกรณี สิ่งนี้จะช่วยให้การจัดการหน่วยความจำแบบไดนามิก

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