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


38

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

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

ดังนั้น

  • กฎง่ายๆที่ควรเริ่มต้นคืออะไร
  • เราควรตรวจสอบตัวชี้วัดผลการปฏิบัติงานหรือตัวบ่งชี้เพื่อตรวจสอบว่าเราไปไกลเกินไปแล้วและโฮสต์ระบบปฏิบัติการกำลังหิวโหยโดยฐานข้อมูลอย่างใด?

พวกคุณเคยปรับแต่งการตั้งค่าเหล่านี้หรือไม่? การทำโปรไฟล์ของคุณบอกอะไรคุณ
jcolebrand

@ jcole ไม่มีอะไรให้เพิ่มในตอนนี้; โดยทั่วไปแล้วเราจะสำรอง 4 - 6 gb สำหรับระบบปฏิบัติการซึ่งค่อนข้างอนุรักษ์นิยมมากกว่าที่ฉันต้องการ
Jeff Atwood

คำตอบ:


30

สมมติว่า Windows และ SQL Server ...

โรงเรียนแห่งความคิดมีสองแห่ง

  1. ปล่อยให้ 2-4 Gigs สำหรับ Windows (ขึ้นอยู่กับสิ่งที่ติดตั้งนอกเหนือจาก SQL Server)
  2. ปล่อยให้หน่วยความจำว่างของคุณว่าง 10% เมื่อคุณได้รับมากกว่า 64 Gigs สิ่งนี้จะกลายเป็นความทรงจำจำนวนมากที่บ้าคลั่งสำหรับระบบปฏิบัติการซึ่งอาจไม่จำเป็น

โดยส่วนตัวฉันอยู่ในกลุ่มแรก Windows มักจะต้องการ 2-4 กิ๊กและบางครั้งอาจสูงถึง 6


2
เห็นด้วยกับ 2 ish gb ของ RAM สำหรับระบบปฏิบัติการ
jcolebrand

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

2
@ ถูกต้อง แต่สิ่งที่ดีที่สุดในการตรวจสอบโดยเฉพาะเมื่อดูที่ "ฉันกำลังจะอดระบบปฏิบัติการหน่วยความจำไม่เพียงพอ"
Jeff Atwood

1
@Jeff ความคิดเห็นของฉันไม่แม่นยำอย่างที่ควรจะเป็น สำหรับหน่วยความจำฉันมักจะดูที่เคาน์เตอร์วัดประสิทธิภาพต่อไปนี้: หน่วยความจำ: หน้า / วินาทีและหน่วยความจำ: ไบต์ที่ใช้ได้ ตรวจสอบหน้าเหล่านี้เพื่อดูข้อมูลเพิ่มเติม: sql-server-performance.com/articles/audit/ … และ technet.microsoft.com/en-us/library/cc966540.aspx (เฉพาะส่วนคอขวดหน่วยความจำ)
Matt M

6
@Jeff Denny คำตอบนั้นถูกต้องและสำหรับเคาน์เตอร์ Perfmon ให้ดูหน่วยความจำ: ไบต์ที่มีให้ ถ้ามันลดลงต่ำกว่านั้นพูดว่า 512MB คุณกำลังตกอยู่ในอันตรายจากการอดอาหาร OS อย่างไรก็ตามโปรดระวังแคชไฟล์ในระบบ 64 บิตซึ่งยังคงปรากฏให้เห็นแม้ว่าจะไม่ใช่: blogs.msdn.com/b/ntdebugging/archive/2007/11/27/ …
Brent Ozar

16

สมมติว่า Linux ถ้าคุณปิด swap และเคอร์เนลยังคงฆ่ากระบวนการ DB ของคุณเพราะหน่วยความจำไม่เพียงพอนั่นเป็นตัวบ่งชี้ที่ดีที่คุณกำลังหิวโหยระบบปฏิบัติการสำหรับหน่วยความจำ ถอยกลับจนกว่าจะหยุดสิ่งที่เกิดขึ้น สองสามร้อย megs มักจะมีมากมาย


+1 สำหรับโปรไฟล์โปรไฟล์ ~ แต่เป็น Jeff Askin ฉันเข้าใจว่าเป็น SQLServer และ Windows อย่างแน่นอน;)
jcolebrand

1
@jcolebrand แต่รู้ว่ามันคือ @jeff คุณจะจำได้ว่าเขาไม่ได้พูดซึ่งหมายความว่าเขาตั้งใจปล่อยให้เปิดไว้สำหรับทุกแพลตฟอร์มและฐานข้อมูลทั้งหมด
xenoterracide

2
และยังรู้อยู่ว่า @jeff ... ทำไมเขาไม่ควรเรียนรู้ที่จะหยุดกังวลและรักลินุกซ์? ;-)
Jürgen A. Erhard

8

คุณสามารถยกระดับประสบการณ์ของอเมซอนในการเรียกใช้เซิร์ฟเวอร์ฐานข้อมูลของลูกค้าหลายพันคนที่นี่: บนบริการฐานข้อมูลเชิงสัมพันธ์ของ Amazon พวกเขาตั้งค่าพูลบัฟเฟอร์ Innodb ของ MySQL เป็น 3/4 ของหน่วยความจำของระบบ เพิ่มมากถึงสองสามเมกะไบต์ต่อการเชื่อมต่อสำหรับบัฟเฟอร์คิวรีต่างๆและพวกเขามีแนวโน้มที่จะเหลือหน่วยความจำ 10-20% ของระบบปฏิบัติการ


5

คุณควรอ่านความทรงจำของ Brent Ozar เขามีคำตอบที่ค่อนข้างเป็นมาตรฐานเกี่ยวกับสาเหตุที่คุณควรมองหาหน่วยความจำและทำไมหน่วยความจำมากกว่าจึงมีประสิทธิภาพที่ดีกว่า พูดโดยทั่วไป 4 GB หรือ 10% สงวนไว้สำหรับระบบปฏิบัติการ

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