ความเร็วสัญญาณนาฬิกาของ CPU เทียบกับจำนวนแกนประมวลผลหลัก - สูงกว่า GHz หรือแกนประมวลผลเพิ่มเติมสำหรับ SQL Server


30

เราเริ่มเตรียมชุดฟิสิคัลเซิร์ฟเวอร์สำหรับคลัสเตอร์เสมือนของโหนด SQL Server 2016 ภายใน VMware เราจะใช้สิทธิ์การใช้งาน Enterprise Edition

เราวางแผนที่จะตั้งค่า 6 โหนด แต่มีการถกเถียงกันเล็กน้อยเกี่ยวกับวิธีที่เหมาะสมที่สุดในการจัดเตรียมเซิร์ฟเวอร์ทางกายภาพที่เกี่ยวกับความเร็วสัญญาณนาฬิกาของ CPU เทียบกับจำนวนหลักของ CPU

ฉันรู้ว่าส่วนใหญ่ขึ้นอยู่กับปริมาณธุรกรรมและจำนวนฐานข้อมูลที่เก็บไว้ในปัจจัยเฉพาะซอฟต์แวร์อื่น ๆ แต่มีกฎทั่วไปที่แนะนำหรือไม่

ตัวอย่างเช่นเซิร์ฟเวอร์ฟิสิคัลแบบ dual-core 8-core, 3.2 GHz (16 คอร์) เป็นสิทธิพิเศษสำหรับเซิร์ฟเวอร์ 16-core, 16 GHz แบบคู่ 16 แกน (32 คอร์) หรือไม่?

มีใครบ้างที่พบกระดาษสีขาวที่นำเสนอหัวข้อประเภทนี้เพิ่มเติมหรือไม่


สิ่งที่คุณกังวลประสิทธิภาพในนามธรรมหรือการออกใบอนุญาตและความคุ้มค่า?
Evan Carroll

คำตอบ:


40

กฎทั่วไปของหัวแม่มือนั้นจะทำให้คอร์นับน้อยที่สุดเท่าที่จะเป็นไปได้และความเร็วโปรเซสเซอร์สูงที่สุดเท่าที่จะเป็นไปได้ คณิตศาสตร์เกี่ยวกับการออกใบอนุญาตที่พิสูจน์แล้วว่ามีค่าประมาณ $ 7,500 USD ต่อหลักสำหรับรุ่นราคาแพง

การซื้อฮาร์ดแวร์ที่ถูกต้องสามารถชำระค่าตัวเองในราคาที่ถูกลง ดูการเลือกตัวประมวลผลสำหรับ SQL Serverโดย Glenn Berry เป็นทรัพยากรที่ยอดเยี่ยมในการเลือกโปรเซสเซอร์สำหรับ SQL Server

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

อย่าคิดว่าตัวประมวลผล 16 x 2.2Ghz เหมือนกับตัวประมวลผล 8 x 4.5Ghz การประหยัดค่าใช้จ่ายในการใช้โปรเซสเซอร์ 2.2Ghz เหนือโปรเซสเซอร์ 4.5Ghz นั้นน่าจะมีมูลค่าสูงสุดประมาณ $ 10,000 USD (สำหรับเครื่องประมวลผลสองเครื่องที่ใช้ Xeon แบบทั่วไป) การเพิ่มจาก 8 คอร์ไปเป็น 16 คอร์ด้วย SQL Server Enterprise Edition นั้นมีแนวโน้มว่าจะมีค่าใช้จ่ายมากกว่า $ 60,000 USD ในค่าธรรมเนียมใบอนุญาต กล่าวอีกนัยหนึ่งคุณอาจประหยัดค่าใช้จ่ายด้านฮาร์ดแวร์ได้ $ 10,000 แต่คุณจะเสียค่าใช้จ่ายเพิ่มอีก $ 50,000 ในการออกใบอนุญาต

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

มีกล่าวว่าสิ่งที่ถ้าเลือกเป็น CPU หนึ่งหรือมากกว่าหนึ่งของ CPU เสมอไปกับมากกว่าหนึ่ง การเรียกใช้ SQL Server (หรือ DBMS ใด ๆ ) บน CPU ตัวเดียวสามารถทำให้เกิดปัญหาได้ทุกประเภทเนื่องจากความสามารถในการทำงานพร้อมกันนั้นมี จำกัด


11

พักสายรอสายชั่วคราว

ในขณะที่ประสิทธิภาพและการอนุญาตให้ใช้สิทธิมีความน่าสนใจแต่ทว่ามันไม่ได้เป็นเพียงแง่มุมเดียวของภาระงานที่ต้องพิจารณา

สิ่งหนึ่งที่สามารถส่งผลกระทบต่อตัวเลือกโปรเซสเซอร์คือเธรดผู้ปฏิบัติงาน

หัวข้อคนงาน?

ใช่เพื่อน! สิ่งเหล่านี้คือสิ่งที่ SQL Server ของคุณจะใช้เพื่อเรียกใช้คิวรีของคุณและทำทุกสิ่งที่เป็นแบ็คกราวด์ที่จำเป็นต้องทำเพื่อให้สิ่งต่าง ๆ มีรูปร่าง

เมื่อคุณทำงานออกจากหัวข้องานคุณตีThreadPoolรอ

ThreadPool?

ThreadPool นี้เป็นหนึ่งใน nastiest รอคุณสามารถมีบนเซิร์ฟเวอร์ของคุณพร้อมกับRESOURCE_SEMAPHORE และ RESOURCE_SEMAPHORE_QUERY_COMPILE แต่นั่นคือหน่วยความจำที่รออยู่และนี่คือคำถามของ CPU

ดังนั้นกลับไปที่สาเหตุที่ว่าทำไมความเพ้อฝันนี้จึงขาดไป

นี่คือวิธีที่ SQL Server คำนวณเธรดผู้ปฏิบัติงาน :

ถั่ว

สังเกตว่าการนับคอร์สองเท่านั้นไม่ได้เพิ่มจำนวนพนักงานสูงสุดเป็นสองเท่าและคุณได้รับหมายเลขเดียวกันกับ 1 คอร์เหมือนกับที่คุณทำกับ 4 คอร์ สมการคือ:512 + ((logical CPUs - 4) * 16)

นั่นเป็นความอัปยศเพราะเมื่อจำนวนคอร์เพิ่มขึ้นความเร็วของนาฬิกามักจะลดน้อยลงไปอีกชั่วครู่หรือชั่วครู่

ถั่ว

การดูที่บรรทัดล่าสุดของชิป Intelจะแสดงแนวโน้มที่คล้ายกัน

ฉันจะรู้จำนวนกระทู้ที่ฉันต้องการได้อย่างไร

สิ่งนี้จะขึ้นอยู่กับ:

  • จำนวนผู้ใช้งาน
  • จำนวนของแบบสอบถามแบบขนาน
  • จำนวนของแบบสอบถามแบบอนุกรม
  • จำนวนฐานข้อมูลและการซิงโครไนซ์ข้อมูล (ทำมิเรอร์, AGs, สำรองข้อมูลสำหรับบันทึกการจัดส่ง)
  • หากคุณออกจาก MAXDOP และ CTFP เป็นค่าเริ่มต้น

หากวันนี้คุณยังไม่หมดคุณอาจไม่เป็นไร

แต่คุณจะรู้ได้อย่างไรว่าคุณเป็น?

มีคำถามที่ดีและมีคำถามที่ดีและแทรกบอกคุณบางอย่างนั่นคือคำถามที่ดี

THREADPOOL สามารถแสดงรายการเป็นปัญหาการเชื่อมต่อและคุณอาจเห็นข้อความในบันทึกข้อผิดพลาดเกี่ยวกับการไม่สามารถวางไข่เธรดได้

นอกจากนี้คุณยังสามารถดูสถิติการรอของเซิร์ฟเวอร์ของคุณโดยใช้เครื่องมือฟรีเช่นsp_Blitz หรือ sp_BlitzFirst (การเปิดเผยข้อมูลทั้งหมดฉันมีส่วนร่วมในโครงการนี้)

EXEC sp_Blitz

ถั่ว

EXEC sp_BlitzFirst @SinceStartup = 1

ถั่ว

ฉันสามารถเพิ่มจำนวนผู้ทำงานสูงสุดได้หรือไม่

การเพิ่ม MWT สามารถนำไปสู่การSOS_SCHEDULER_YIELDรอที่เพิ่มขึ้น

นั่นไม่ใช่จุดจบของโลก แต่คิดว่ามันเหมือนกับการเพิ่มเด็ก ๆ จำนวนมากให้กับชั้นเรียนของครู

ทันใดนั้นเด็กทุกคนจะได้รับความสนใจ

เมื่อกระบวนการหมดปริมาณควอนตัม 4msอาจมีเธรดจำนวนมากรออยู่ก่อนที่จะเข้าสู่ CPU

ประสิทธิภาพอาจรู้สึกเหมือนกัน

ฉันจะใช้เธรดผู้ทำงานน้อยลงได้อย่างไร

คุณโหดร้าย [คำนาม] แห่ง [คำนาม] นั่นคือคนทำงานที่มีครอบครัวคอยช่วยเหลือ! จำนอง! ความฝัน!

แต่ไม่เป็นไรต้องเคารพบรรทัดล่าง คุณคือหัวหน้า

จุดเริ่มต้นที่ง่ายที่สุดคือการเปลี่ยนการตั้งค่าเช่น MAXDOP และเกณฑ์ค่าใช้จ่ายสำหรับการขนานจากค่าเริ่มต้น

หากคุณมีคำถามเกี่ยวกับวิธีการตั้งค่าตรงไปที่นี่:

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

โดยเฉพาะอย่างยิ่งหากคุณมีการรอคอยสูงในการขนาน ( CXPACKET) และสูงรอการล็อค ( LCK_) จากนั้นคุณอาจทำงานเป็นโซ่ยาวการปิดกั้นที่เกี่ยวข้องกับแบบสอบถามแบบขนาน

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

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

น่าเสียดายที่ประเภทของการสืบค้นและการปรับดัชนีที่คุณต้องทำเพื่อแก้ไขสิ่งนั้นอยู่นอกเหนือขอบเขตของคำถาม

หวังว่านี่จะช่วยได้!


2

ชุมชนวิกิพีเดียคำตอบ :

ความยาวและความสั้นของมันคือ: ปริมาณงานส่วนใหญ่สำหรับ SQL Server คือ OLTP ซึ่งได้รับประโยชน์จากความเร็วสัญญาณนาฬิกาที่สูงขึ้นเนื่องจากเป็นการทำงานแบบอนุกรม

หากคุณไม่ได้ออกแบบมาเป็นพิเศษสำหรับระบบขนานขนาดใหญ่ความเร็วของนาฬิกาจะชนะได้เสมอ กรณี Edge มีอยู่ แต่นั่นคือคำตอบเวลา 95% ความจริงที่ว่ามันจบลงด้วยต้นทุนที่น้อยลงก็เป็นสิ่งที่ดีเช่นกัน


-3

คำตอบนี้มาจาก: ขึ้นอยู่กับกรณีการใช้งานของคุณ

  • คุณกำลังประมวลผลคำขอขนาดเล็กหลายรายการพร้อมกันหรือคำขอขนาดใหญ่ไม่กี่รายการ?
  • โปรแกรมที่คุณใช้ทำงานได้รับการปรับให้เหมาะสมกับมัลติคอร์หรือไม่?

ตัวอย่างเช่นฉันมีคอมพิวเตอร์ quad core แต่คอมไพเลอร์ ESP8266 ใช้ CPU เพียง 25% เท่านั้นเพราะมันออกแบบมาเพื่อใช้เพียงหนึ่งคอร์ ถ้าฉันมี 1 คอร์ที่รวดเร็วนั่นจะเหมาะกว่า


6
สวัสดีและยินดีต้อนรับสู่dba.stackexchange.com ! คำตอบของคุณเป็นจริงสำหรับกรณีทั่วไปมาก แต่ไม่ได้เน้นในกรณี SQL หรือฐานข้อมูลที่ OP ถาม ลองปรับปรุงด้วยการทำสิ่งนี้ให้ลึกลงไป! :)
xDaizu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.