... หวังว่าฉันจะได้ ... ประมาณคร่าวๆของสิ่งที่เราควรจะทำงาน
หากไม่มีข้อมูลเพิ่มเติมเกี่ยวกับข้อความค้นหาและขนาดข้อมูลของคุณเป็นเรื่องยากมากที่จะให้การประมาณการแบบใดก็ตามกับคุณ
ฐานข้อมูล: sql server 2008 r2 ฐานข้อมูลองค์กร
Windows: Windows 2008 r2 Enterprise 64 บิตค่อนข้างแน่ใจว่าทำงานบน VMware
หน่วยประมวลผล: Intel (R) Xeon (R) CPU E7-4860 @ 2.27GHz 2.26 GHz (โปรเซสเซอร์ 2 ตัว)
หน่วยความจำที่ติดตั้ง: 4GB
โปรเซสเซอร์สองตัว (ฉันสมมติว่านี่คือการเปิดเผยใน VM เป็น 2 คอร์) อาจหรืออาจไม่ได้รับการจัดเตรียม คอร์ที่กำหนดให้กับ VM ไม่จำเป็นต้องแมปโดยตรงกับฟิสิคัลคอร์ (หรือแม้แต่อนุญาตให้ใช้ 100% ของคอร์เดียวเมื่อต้องการ!) ดังนั้นคุณอาจพบว่านี่เป็นทรัพยากรที่ยืดหยุ่นกว่าหน่วยความจำ หากไม่มีข้อมูลเพิ่มเติมเกี่ยวกับภาระงานหรือการกำหนดค่าฮาร์ดแวร์ / การจำลองเสมือนของคุณฉันจะบอกว่าการเพิ่มสิ่งนี้เป็น 4 น่าจะเป็นการดี
การจัดสรรหน่วยความจำ โอ้เด็ก. นี่คือไม่มีการลดภายใต้การจัดเตรียมสำหรับภาระงาน Windows ต้องการขั้นต่ำเปล่า 2-3 GB เพื่อให้มีความสุขและผู้ใช้ 2 คนที่เรียกใช้ BIDS ในกล่องจะต้องมีอย่างน้อย 500 MB ต่อคน และเมื่อถึงตอนนั้นกล่องก็จะเต็มไปหมดแล้วและฉันก็ไม่ได้เริ่มคิดออกว่าฐานข้อมูลจะต้องการเท่าไร
ผู้ใช้ส่วนใหญ่มีปฏิสัมพันธ์กับฐานข้อมูลผ่านเว็บไซต์ asp.net และเว็บไซต์เซิร์ฟเวอร์รายงาน
คุณไม่ได้พูด แต่ถ้าสิ่งเหล่านี้กำลังทำงานอยู่ในกล่องเดียวกันความต้องการหน่วยความจำสำหรับพวกเขาก็ต้องนำมาพิจารณาเช่นกัน
ในที่สุดเรามีการดำเนินการจัดเก็บข้อมูลที่เกี่ยวข้องอย่างเป็นธรรมซึ่งอาจนำมาซึ่ง 3 ล้านระเบียนต่อวันผ่านทางแพคเกจ SSIS ที่ทำงานบนเซิร์ฟเวอร์
สมมติว่าสิ่งนี้ทำงานในเวลากลางคืนเมื่อไม่มีผู้ใช้ออนไลน์อยู่ในระบบฉันไม่เห็นสิ่งนี้เป็นปัญหาเว้นแต่ว่าจะใช้เวลานานเกินไปในการทำงาน ส่วนนี้เป็นสิ่งที่คุณกังวลน้อยที่สุด ผู้ใช้ออนไลน์มีความสำคัญมากกว่า
คำขอก่อนหน้าของเราสำหรับหน่วยความจำเพิ่มเติมถูกปฏิเสธด้วยการตอบกลับทั่วไปที่เราต้องดำเนินการเพิ่มประสิทธิภาพการสืบค้นเพิ่มเติม
ดังที่ฉันได้แสดงไว้ด้านบนจำนวนหน่วยความจำปัจจุบันที่จัดสรรไว้ไม่เพียงพอ ในเวลาเดียวกันแม้ว่าที่ปลายอีกด้านหนึ่งของสเปกตรัมมันไม่น่าเป็นไปได้ที่คุณจะได้รับหน่วยความจำเพียงพอที่จะสามารถเก็บฐานข้อมูลทั้งหมดไว้ในหน่วยความจำได้ในครั้งเดียว
แม้ว่าคุณจะได้รับการตอบสนองแบบครอบคลุม (ซึ่งอาจจะเกี่ยวข้องกับการโน้มน้าวใจให้เหตุผลของคุณเกี่ยวกับแหล่งข้อมูลเพิ่มเติมและไม่ใช่การใช้ทรัพยากรจริง ) แต่ก็มีแนวโน้มที่ประสิทธิภาพของฐานข้อมูลจะสูงขึ้น ปรับตัวดีขึ้น แต่ไม่มีการปรับจูนเพียงอย่างเดียวที่สามารถแก้ไขปัญหาที่คุณประสบอยู่ตอนนี้ ข้อเสนอแนะของที่ไม่สมบูรณ์สำหรับฉัน
ผมจะใช้วิธีการโดยรวมที่จำนวนหน่วยความจำที่จัดสรรในปัจจุบันคือต่ำกว่าขั้นต่ำที่จำเป็น (ซึ่งควรได้รับการแก้ไขโดยเร็ว) และทรัพยากรเพิ่มเติมอาจจะจำเป็นในการปรับปรุงประสบการณ์การใช้งานให้อยู่ในระดับที่ใช้งานได้ในขณะที่การปรับปรุงจะทำเพื่อเพิ่มประสิทธิภาพของ ระบบ
นี่เป็นความคิดเล็กน้อย (ตามลำดับของการโจมตี):
คุณจะเป็นผู้ชนะถ้าคุณสามารถพิสูจน์ได้ว่าประสิทธิภาพเพิ่มขึ้นทุกครั้งที่คุณได้รับการจัดสรรทรัพยากรมากขึ้น ติดตามตัวชี้วัดประสิทธิภาพโดยใช้การบันทึกการตรวจสอบประสิทธิภาพ (หมายเหตุ: ส่วนการบันทึกมีความสำคัญมาก) รวมถึงเวลาตอบสนองเว็บไซต์หากคุณทำได้ เริ่มทำสิ่งนี้ก่อนที่จะทำอะไรอย่างอื่น เมื่อคุณทำจนได้รับจำนวนเงินขั้นต่ำของหน่วยความจำ (คุณจะไม่ได้ไปจะได้รับ 32 GB ทันที) ก็ตอนนี้คุณมีหลักฐานว่าหน่วยความจำเพิ่มการปรับปรุงสิ่ง ... ซึ่งหมายถึงการเพิ่มมากขึ้นอาจจะช่วยเหลือมากเกินไป! หากคุณไม่ได้รวบรวมพื้นฐานในการกำหนดค่าปัจจุบันคุณจะพลาดเรือเมื่อสิ่งต่าง ๆ ถูกกระแทกไปจนถึงระดับที่แนะนำขั้นต่ำ
วิเคราะห์สถิติการรอของเซิร์ฟเวอร์ของคุณ นี่จะบอกคุณว่าคอขวดที่ใหญ่ที่สุดในระบบคืออะไร คุณอาจมีPAGEIOLATCH_XX
เวลารอคอยมากที่สุด / สูงสุดซึ่งแสดงว่ามีการทำ I / O มากเกินไปเพื่อดึงหน้าจากดิสก์ สิ่งนี้สามารถบรรเทาได้โดยการเพิ่มหน่วยความจำดังนั้น I / O ทางกายภาพจึงกลายเป็นความถี่ที่น้อยลงเนื่องจากข้อมูลที่ต้องการอยู่ในหน่วยความจำแล้ว ในขณะที่การวิเคราะห์นี้เป็นข้อสรุปมาก่อนแล้วความจริงที่คุณรวบรวมสถิติเหล่านี้จะช่วยให้คุณมีกระสุนมากขึ้นเมื่อแสดงความต้องการทรัพยากร
ตามที่ฉันได้กล่าวไว้ข้างต้นความต้องการขั้นต่ำสำหรับหน่วยความจำขั้นต่ำไม่ได้เกิดขึ้น รวบรวมชุดข้อกำหนดของฮาร์ดแวร์ที่แนะนำสำหรับซอฟต์แวร์ทั้งหมดที่คุณใช้และอาจจับภาพหน้าจอของตัวจัดการงาน เพียงอย่างเดียวนี้ก็เพียงพอที่จะให้เหตุผลอย่างน้อย 4-8 GB ขึ้นไปในทันที หากพวกเขายังคงปฏิเสธพยายามโน้มน้าวใจพวกเขาเพื่อให้คุณลองใช้งานเป็นเวลาหนึ่งสัปดาห์และให้กลับมาหลังจากนั้น (คุณกำลังรวบรวมสถิติประสิทธิภาพดังนั้นคุณไม่จำเป็นต้องให้คืนเพราะช่วงกลางสัปดาห์คุณ จะสามารถพิสูจน์ได้ว่าสถานการณ์ดีขึ้นมากเพียงใด) หากพวกเขายังคงปฏิเสธคุณกำลังตั้งค่าให้ล้มเหลว URLT
หากคุณสามารถลดปริมาณงานบางส่วน (โดยเฉพาะอย่างยิ่งหลีกเลี่ยงการ remoting ถ้าเป็นไปได้ทั้งหมด) ซึ่งจะเพิ่มจำนวนหน่วยความจำที่มีอยู่สำหรับฐานข้อมูลซึ่งมีความสำคัญมากขึ้น
คุณจะไม่สามารถให้พอดีกับฐานข้อมูลทั้งหมดในหน่วยความจำในครั้งเดียวซึ่งหมายความว่าคุณจะต้องตั้งการตั้งค่าอย่างระมัดระวังกับหน่วยความจำสูงสุดของ SQL Server ป้องกันไม่ให้หน่วยความจำมากกว่ากระทำซึ่งฆ่าประสิทธิภาพเหมือนไม่มีอะไรอื่น การกระทำที่เกินความจริงนั้นเลวร้ายยิ่งกว่าการไม่สามารถใส่ข้อมูลทั้งหมดในหน่วยความจำได้ มีโอกาสสูงที่คุณจะอยู่ในสถานการณ์นี้ในขณะนี้เนื่องจากไม่มีหน่วยความจำเหลืออยู่เลยและมีความเป็นไปได้ที่การตั้งค่าหน่วยความจำสูงสุดจะถูกตั้งเป็นค่าเริ่มต้น (ไม่ จำกัด )
เนื่องจากคุณกำลังเรียกใช้ SQL Server Enterprise Edition และหน่วยความจำที่พรีเมี่ยม, ฉันจะขอพิจารณาดำเนินการบีบอัดข้อมูล สิ่งนี้จะเป็นการแลกเปลี่ยนการใช้งาน CPU ที่เพิ่มขึ้นเพื่อประหยัดพื้นที่ของหน่วยความจำ (และทำให้การเข้าถึงดิสก์ลดลงซึ่งค่อนข้างช้ามาก)
ปรับแต่งฐานข้อมูล เป็นไปได้ว่าโครงสร้างและข้อความค้นหาอาจใช้การปรับปรุงเท่าที่การจัดทำดัชนีและรูปแบบการเข้าถึงดำเนินไป นอกจากนี้หากข้อมูลจำนวนมากถูกสแกนและรวบรวมบ่อยครั้งการสร้างมุมมองที่จัดทำดัชนีตารางสรุปหรือรายงานที่คำนวณล่วงหน้าอาจมีประโยชน์มาก
นี่อาจเป็นช็อตที่ยาวเพราะอาจหมายถึงการเตรียมฮาร์ดแวร์มากขึ้น แต่ใช้วิธีการแคช แบบสอบถามที่เร็วที่สุดคือคนที่คุณไม่เคยทำ
นี่เป็นเพียงความคิดเล็กน้อย บรรทัดล่างคือการปรับจูนเพียงอย่างเดียวจะไม่แก้ปัญหาที่นี่และจะไม่ใช้ฮาร์ดแวร์เพียงอย่างเดียวแม้ว่าเครื่องหลังอาจจะช่วยบรรเทาปัญหาส่วนใหญ่ได้ทันที นั่นคือวิธีการ: โยนฮาร์ดแวร์ที่ปัญหาในระยะสั้นเพื่อดับไฟและโยนการปรับแต่งที่ปัญหาในระยะยาวเพื่อแก้ไขสาเหตุที่ดีที่สุดที่คุณสามารถทำได้