พักสายรอสายชั่วคราว
ในขณะที่ประสิทธิภาพและการอนุญาตให้ใช้สิทธิมีความน่าสนใจแต่ทว่ามันไม่ได้เป็นเพียงแง่มุมเดียวของภาระงานที่ต้องพิจารณา
สิ่งหนึ่งที่สามารถส่งผลกระทบต่อตัวเลือกโปรเซสเซอร์คือเธรดผู้ปฏิบัติงาน
หัวข้อคนงาน?
ใช่เพื่อน! สิ่งเหล่านี้คือสิ่งที่ 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 สี่คอร์ที่ผู้ดูแลระบบของคุณมั่นใจว่าเพียงพอสำหรับการทำงานที่หนักอึ้งกว่าอากาศใช่ไหม?
น่าเสียดายที่ประเภทของการสืบค้นและการปรับดัชนีที่คุณต้องทำเพื่อแก้ไขสิ่งนั้นอยู่นอกเหนือขอบเขตของคำถาม
หวังว่านี่จะช่วยได้!