วิธีการปรับสมดุลหน่วยความจำ SQL Server กับหน่วยความจำบริการวิเคราะห์เซิร์ฟเวอร์ SQL


11

เรามีหลายระบบที่มีการกำหนดค่าเดียวกัน

  • เซิร์ฟเวอร์เดียว (เสมือนหรือจริง)
  • ใช้ SQL Server (SQL) และ SQL Server Analysis Server (AS)
  • หลายแกน
  • RAM 16gb

แต่ละคืน SQL Server จะทำการประมวลผลประมาณ 2-3 ชั่วโมงตามด้วยการประมวลผล AS 2-3 ชั่วโมง จากนั้นตลอดทั้งวันจะมีการสอบถามเฉพาะ AS

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

เหตุผลที่ถามคือถ้าฉันไม่ได้ตั้งค่าขีด จำกัด สำหรับ SQL มันจะดึงหน่วยความจำทั้งหมดที่ทำได้ อย่างไรก็ตาม - ความเข้าใจของฉันคือ SQL จะปล่อยหน่วยความจำนี้อย่างมีความสุขถ้า:

  • มันไม่ได้ใช้มันและ

  • บริการ / โปรแกรมอื่นร้องขอ

ดังนั้นจากมุมมองเชิงตรรกะผมเชื่อว่าช่วยให้ SQL เพื่อใช้เวลามากที่สุดเท่าที่มันต้องการ TotalMemoryLimitแต่ฉันไม่แน่ใจเกี่ยวกับการเป็น' ฉันไม่แน่ใจว่า AS จะละทิ้งความทรงจำของมันหรือไม่ ในความเป็นจริงการอ่านมากขึ้นทำให้ฉันเชื่อว่ามันผิดที่จะให้มันทั้งหมด

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

หวังว่ามันจะสมเหตุสมผล

คำตอบ:


9

ฉันคิดว่ามันเป็นไปได้ที่จะบังคับให้บริการทั้งสองโดยมีงานที่กำหนดหรือบริการที่:

(a) ก่อนการประมวลผลทุกคืนของ SQL Server ปิดบริการ SSAS และเพิ่มหน่วยความจำที่จัดสรรให้กับ SQL Server

(b) หลังจาก SQL Server ประมวลผลเสร็จแล้วลดหน่วยความจำเซิร์ฟเวอร์สูงสุดและรีสตาร์ทเซิร์ฟเวอร์ SQL

(c) เริ่ม SSAS

นี่ถือว่า SSAS ไม่จำเป็นต้องออนไลน์ในขณะที่กำลังประมวลผล SQL Server มิฉะนั้นเปลี่ยน (a) จาก "ปิด" เป็น "เริ่มใหม่" ... ตราบใดที่ SSAS ไม่ได้ทำอะไรเลยในขณะที่กำลังประมวลผล SQL Server ไม่ควรกังวลว่ามันจะขโมยหน่วยความจำกลับ

นอกจากนี้ยังถือว่าคุณต้องการให้แต่ละบริการซ้อนทับปริมาณการใช้หน่วยความจำและใช้หน่วยความจำเดียวกันในเวลาที่ต่างกัน - ฉันแน่ใจว่ามีวิธีที่มีความเกี่ยวข้อง / NUMA เป็นต้นเพื่อแยกพื้นที่ปฏิบัติการของพวกเขาหรือในกรณีที่แย่ที่สุด พวกเขาในเครื่องที่แตกต่างกัน


ฉันคิดว่าบางทีเราควรเริ่ม SQL ใหม่หลังจากประมวลผล SASS ด้วย - เนื่องจากมันมีขนาดใหญ่อ่าน (คลังข้อมูล)
Preet Sangha

จริงๆแล้วคิดเกี่ยวกับมัน - การรีสตาร์ทเซิร์ฟเวอร์ SQL จะไม่ส่งผลกระทบต่อการประมวลผล SQL ทั้งหมดหรือไม่
Preet Sangha

1
@Preet ใช่แล้วนั่นไม่ใช่ประเด็นเหรอ?
Aaron Bertrand

7

SQL และ SSAS จำเป็นต้องทำงานพร้อมกันหรือไม่? ถ้าไม่แน่ใจ 100%

ฉันจะดูการตั้งค่าการตั้งค่าหน่วยความจำสำหรับ SQL และ SSAS เพื่อดูว่าพวกเขาสามารถร่วมมือกันได้หรือไม่

เราจะต้องออกจากหน่วยความจำสำหรับระบบปฏิบัติการกระบวนการอื่น ๆ และการจัดสรรหลายหน้า บางที 4G

ลองอะไรเช่นนี้ ...

ทางด้าน SQL ให้ตั้งค่า Max Server Memory เป็น 12G และ Min Server Memory เป็น 6G

ที่ด้าน SSAS ให้ตั้งค่า TotalMemoryLimit เป็น 12G และ LowMemoryLimit เป็น 6G

นอกจากนี้อย่าเปิดใช้งานการล็อกหน้าในหน่วยความจำ

ลองทำซ้ำสองสามครั้งโดยปรับตัวเลขเหล่านี้ขึ้นหรือลง

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

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