แนวทางปฏิบัติที่ดีที่สุดสำหรับการเรียกใช้ SQL Server ในเครื่องเสมือนคืออะไร


21

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


2
ดิสก์จะถูกเก็บไว้ที่ไหน? บน Local 5400 RPM HDD หรือไม่ บน SAN ที่มีการเชื่อมต่อไฟเบอร์และดิสก์แกนหมุน 15k? VMs ทั้งหมดในวันนี้เป็นเรื่องเกี่ยวกับ IO, CPU แทบไม่มีอะไรในการพิจารณา
jcolebrand

ไม่ไม่ใช่ท้องถิ่น แต่ฉันไม่รู้รายละเอียดของ SAN
JerryOL

2
ฉันไม่สามารถเพิ่มความคิดเห็นได้เนื่องจากฉันยังไม่มีชื่อเสียงเพียงพอ แต่ [อ้างอิงจาก Microsoft] [1] ในปี 2008 R2 มีความแตกต่างของประสิทธิภาพเล็กน้อยระหว่างดิสก์เสมือนจริงแบบคงที่และแบบไดนามิก [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/…
Terry Bochaton

@Terry ในอนาคตรู้สึกอิสระที่จะตั้งค่าสถานะคำตอบดังกล่าวและเราจะแปลงให้คุณ
jcolebrand

คำตอบ:


18

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

  • ใช้ขนาดคงที่เสมอไม่ใช่ดิสก์เสมือนแบบไดนามิกและตรวจสอบให้แน่ใจว่าไดรฟ์ / อาร์เรย์พื้นฐานเพียงพอ Dynamic vdisks นั้นมีประสิทธิภาพน้อยกว่าขนาดคงที่
  • หากข้อมูลใน VM ไม่ใช่ภารกิจที่สำคัญให้เปิดความสามารถของโซลูชัน VM เพื่อแคชการเขียน (อยู่ในระบบปฏิบัติการ guest guest เกี่ยวกับเวลาที่สิ่งต่าง ๆ ถูกเขียนลงดิสก์) เพื่อประสิทธิภาพที่เพิ่มขึ้น สิ่งนี้มีประโยชน์สำหรับเครื่องพัฒนาและทดสอบซึ่งข้อมูลถูกแทนที่ได้ง่ายหรือแบบจำลองแบบอ่านอย่างเดียวในเครื่องสำหรับต้นแบบที่สามารถสร้างใหม่ได้หากพวกเขาประสบปัญหาใด ๆ แต่ขอแนะนำให้ใช้ตัวเลือกดังกล่าวสำหรับระบบการผลิตและสำรองข้อมูล พวกเขาเพิ่มโอกาสของการสูญหายของข้อมูล (หรือแย่กว่านั้นคือความเสียหาย) หากเครื่องปิดโดยไม่คาดคิด
  • ตรวจสอบให้แน่ใจว่า VM แต่ละตัวมี RAM เพียงพอที่จะใช้งานเช่นนั้นชุดการทำงานปกติของแต่ละฐานข้อมูลจะพอดีกับหน่วยความจำที่มีพื้นที่ว่างเพียงพอสำหรับการหลีกเลี่ยง IO ที่ไม่จำเป็น นอกจากนี้ตรวจสอบให้แน่ใจว่าไฮเปอร์ไวเซอร์จะไม่ส่งหน้า VMs RAM ออกเมื่อใดก็ได้ (ตัวอย่างเช่นผลิตภัณฑ์ VMWare ส่วนใหญ่สามารถทำสิ่งนี้ได้ซึ่งช่วยให้คุณสามารถรันชุด VMs ที่ใหญ่กว่าที่คุณสามารถทำได้บนฮาร์ดแวร์เดียวกัน มีขนาดใหญ่ - มีตัวเลือกในการปรับหรือปิดพฤติกรรมนี้)
  • หากโฮสต์ใช้อาร์เรย์ RAID5 ให้พิจารณาย้ายไปยัง RAID10 สิ่งนี้จะลดพื้นที่ว่าง แต่ลบปัญหาประสิทธิภาพการเขียนที่สามารถปรากฏกับ RAID5 (หรือ 6)
  • สำหรับ VMs ที่มีแนวโน้มที่จะเห็นกิจกรรม IO มากมายให้พิจารณาให้ไดรฟ์หรืออาเรย์ของตนเองหรือให้พวกเขาแบ่งปันไดรฟ์ / อาเรย์ของพวกเขากับข้อมูลที่เห็นกิจกรรมต่ำ

แน่นอนถ้าฐานข้อมูลทั้งหมดของคุณ (และทุกอย่างอื่นที่ VM กำลังทำงานอยู่) เหมาะสมกับ RAM ที่จัดสรรให้กับ VM และเห็นกิจกรรมการเขียนเพียงเล็กน้อยประสิทธิภาพของ IO อาจมีปัญหาน้อยกว่ามาก

แก้ไข:อีกไม่กี่จุด:

  • หากใช้ดิสก์เสมือนต้องแน่ใจว่าใช้คอนโทรลเลอร์ชนิดที่ดีที่สุดเพื่อประสิทธิภาพ โซลูชัน virtualisation บางตัวเสนอตัวควบคุมเสมือนหลายประเภทเพื่อความเข้ากันได้ของแขกที่ดีขึ้นและคุณอาจพบว่ามีประสิทธิภาพน้อยกว่าคนอื่น ๆ เนื่องจากข้อ จำกัด ของโปรโตคอลในการออกแบบที่จำลองและข้อ จำกัด ในไดรเวอร์ของแขกของระบบปฏิบัติการแขก
  • หากโซลูชันเวอร์ช่วลไลเซชั่นของคุณมีไดรเวอร์เฉพาะสำหรับตัวควบคุมไดรฟ์เสมือนตรวจสอบให้แน่ใจว่าแขกของคุณใช้ระบบปฏิบัติการเหล่านี้ - สิ่งเหล่านี้สามารถเพิ่มความเร็ว IO จำนวนมากได้โดยลดจำนวนสำเนาของหน่วยความจำต่อหน่วยความจำ สวิตช์ที่เกี่ยวข้องในการดำเนินการบางอย่าง
  • จุดสองจุดด้านบนมีผลบังคับใช้หากคุณใช้ที่เก็บข้อมูลเครือข่ายเช่น SMB ที่ใช้ร่วมกันอย่างง่าย ๆ หรือ iSCSI ด้วย: ตรวจสอบให้แน่ใจว่าคุณกำลังใช้ตัวควบคุมเครือข่ายเสมือนที่มีประสิทธิภาพมากที่สุดตามข้อเสนอ และแบนด์วิดท์อาจถูก จำกัด เกินความต้องการโดยชั้น virtualisation

1
ก็ใช่และไม่ใช่ ไดรฟ์ข้อมูล SAN ที่ติดตั้งใน VM ผ่านตัวเริ่มต้น iSCSI จะด่าอย่างรวดเร็ว!
ออกุสตุส

1
@Gaius: จุดดี ฉันได้เพิ่มหมายเหตุเกี่ยวกับ vNIC และไดรเวอร์ซึ่งน่าจะเป็นแหล่งที่มาของคอขวดพิเศษในกรณีเหล่านั้น
David Spillett

9

นี่เป็นจุดเริ่มต้นที่ดี: http://www.brentozar.com/sql/virtualization-best-practices/ และhttp://sqlskills.com/blogs/brent/category/Virtualization.aspx


1
~ มีส่วนใดบ้างที่คุณอาจต้องการเน้นจากบทความ?
jcolebrand

2
ไม่เนื่องจากการทำเวอร์ช่วลไลเซชั่นอาจเป็นหัวข้อที่ซับซ้อนฉันจึงแนะนำให้อ่านทั้งหมด มันไม่มากเท่าไหร่ หาก OP กำลังมองหาคำตอบอย่างรวดเร็วอาจเป็นคำตอบที่ถูกต้อง
Eric Humphrey - lotsahelp

ฉันตามหลังแนวปฏิบัติที่ดีที่สุดโดยทั่วไป หลังจากเพิ่งย้าย SQLServer 2000 Standard ไปยัง VM ใหม่ฉันกำลังพยายามแก้ไขปัญหาเกี่ยวกับเว็บไซต์ที่เรียกขั้นตอนการจัดเก็บซึ่งตอนนี้หมดเวลาหากพวกเขาไม่ได้แคชในหน่วยความจำ แม้ว่าหน่วยความจำกายภาพและ VM ที่กำหนดไว้จะเหมือนกัน แต่ 4GB
JerryOL

1
@JerryOL: ตรวจสอบให้แน่ใจว่า RAM ที่จัดสรรให้กับ VM ไม่ได้รับอนุญาตให้ทำเพจเอาต์ (มิฉะนั้นการจัดสรร 4Gb ให้กับ VM นั้นไม่เหมือนกับการมี 4GB บนเครื่องฟิสิคัล) และหากโซลูชันเวอร์ช่วลไลเซสที่คุณใช้เสนอ ทำให้แน่ใจว่าเลือกอย่างดีที่สุดและใช้ไดรเวอร์ที่ถูกต้องโดย guest OS
David Spillett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.