มีหลายอย่างเกิดขึ้นที่นี่และส่วนใหญ่ค่อนข้างกว้างและคลุมเครือ
2008R2 RTM ออกมาในวันที่ 21 เมษายน 2010 ซึ่งไม่ได้รับการสนับสนุนทั้งหมด คุณต้องการจัดลำดับความสำคัญในการรับ Service Pack ล่าสุดซึ่งออกมาเมื่อประมาณ 3 ปีที่แล้วจนถึงวันนี้ ด้วยวิธีนี้คุณจะได้รับการคุ้มครองหากคุณพบข้อผิดพลาดแปลก ๆ หรืออะไรบางอย่าง ตรงไปที่นี่เพื่อหาว่าคุณต้องดาวน์โหลดอะไร
เมื่อคุณเพิ่ม vCPU (ตั้งแต่ 1 ถึง 4) และไม่ได้เปลี่ยนการตั้งค่าใด ๆ ตอนนี้แบบสอบถามของคุณจะสามารถขนานกันได้ ฉันรู้ว่ามันฟังดูเหมือนว่าพวกเขาทั้งหมดจะเร็วขึ้น แต่แขวนไว้!
คุณอาจเพิ่ม RAM แต่คุณอาจไม่ได้เปลี่ยน Max Server Memory เพื่อให้เซิร์ฟเวอร์ของคุณสามารถใช้ประโยชน์จากมันได้
คิดออกว่าเซิร์ฟเวอร์ของคุณกำลังรออะไรอยู่ โครงการโอเพ่นซอร์สที่ฉันทำงานให้สคริปต์ฟรีเพื่อช่วยคุณวัด SQL Server ของคุณ หัวมากกว่าที่นี่ถ้าคุณต้องการที่จะให้พวกเขาลอง
คุณจะต้องการคว้า sp_BlitzFirst เพื่อตรวจสอบสถานะการรอของเซิร์ฟเวอร์ของคุณ คุณสามารถรันได้สองวิธี
นี่จะแสดงให้คุณเห็นว่าเซิร์ฟเวอร์ของคุณกำลังรออะไรอยู่ตั้งแต่เปิดเครื่อง
EXEC dbo.sp_BlitzFirst @SinceStartup = 1;
สิ่งนี้จะแสดงให้คุณทราบว่าข้อความค้นหาใดกำลังรออยู่ในระหว่างหน้าต่าง 30 วินาที
EXEC dbo.sp_BlitzFirst @Seconds = 30, @ExpertMode = 1;
เมื่อคุณทราบว่ามีข้อความค้นหาใดบ้าง (มีข้อความมากมายเกี่ยวกับการรอสถิติอยู่) คุณสามารถเริ่มทำการเปลี่ยนแปลงเพื่อให้ได้สิ่งต่าง ๆ ภายใต้การควบคุม
หากคุณเห็นพวกเขารออยู่CXPACKET
นั่นหมายความว่าข้อความค้นหาของคุณกำลังขนานกันและอาจเหยียบย่ำกัน หากคุณพบสิ่งนี้คุณอาจต้องการพิจารณาเกณฑ์ค่าใช้จ่ายในการชนสำหรับ Parallelism สูงสุด 50 และอาจลด MAXDOP ลงเหลือ 2
หลังจากขั้นตอนนี้คือเมื่อคุณต้องการใช้บางสิ่งบางอย่างเช่นsp_WhoIsActiveหรือ sp_BlitzWho (ขั้นตอนหลังอยู่ใน GitHub repo จากก่อนหน้านี้) เพื่อเริ่มเก็บแผนแบบสอบถาม นอกเหนือจากสถานะการรอแล้วพวกเขายังเป็นหนึ่งในสิ่งที่สำคัญที่สุดที่คุณสามารถดูได้ว่าเกิดอะไรขึ้น
คุณอาจต้องการตรวจสอบบทความนี้โดย Jonathan Kehayias เกี่ยวกับVMWare Countersเพื่อตรวจสอบที่เกี่ยวข้องกับ SQL Server
ปรับปรุง
การตรวจสอบสถิติการรอคอยและเด็กชายเป็นสิ่งที่แปลก มีอะไรบางอย่างเกิดขึ้นกับซีพียู เซิร์ฟเวอร์ของคุณส่วนใหญ่นั่งเบื่อ ๆ อยู่ แต่เมื่อสิ่งต่างๆร้อนจัดสิ่งเลวร้าย ฉันจะพยายามทำลายมันให้ง่ายขึ้น
คุณกำลังกดปุ่มรอพิษTHREADPOOL
ที่เรียกว่า คุณไม่มีตัน แต่มันก็สมเหตุสมผลเพราะเซิร์ฟเวอร์ของคุณไม่ทำงานหนักมาก ฉันจะอธิบายว่าทำไมในไม่กี่นาที
คุณต้องรอนานจริงๆเฉลี่ยและSOS_SCHEDULER_YIELD
CXPACKET
คุณอยู่บน VM ดังนั้นคุณจะต้องตรวจสอบให้แน่ใจว่า SQL Server มีการจองหรือกล่องนั้นไม่ได้มีการสมัครสมาชิกมากเกินไป เพื่อนบ้านที่มีเสียงดังสามารถทำลายวันของคุณที่นี่อย่างแท้จริง คุณต้องแน่ใจว่าเซิร์ฟเวอร์ / VM guest / VM host ไม่ได้ทำงานในโหมด Balanced Power สิ่งนี้ทำให้ซีพียูของคุณหมุนไปที่ความเร็วต่ำโดยไม่จำเป็นและจะไม่หมุนกลับเป็นความเร็วเต็มทันที
พวกเขาจะผูกได้อย่างไร ด้วย 4 ซีพียูคุณจะมี 512 เธรดผู้ทำงาน โปรดทราบว่าคุณมีจำนวนเท่ากันโดยใช้ซีพียูตัวเดียว แต่เมื่อเคียวรีของคุณสามารถขนานกันได้พวกเขาสามารถใช้เธรดผู้ทำงานได้มากขึ้น ในกรณีของคุณ 4 กระทู้ต่อสาขาขนานของแบบสอบถามแบบขนาน
ขนานกันคืออะไร เป็นไปได้มากที่สุดทุกอย่าง เกณฑ์ค่าใช้จ่ายเริ่มต้นสำหรับความเท่าเทียมเป็น 5. มีจำนวนที่ถูกสร้างขึ้นบางครั้งค่าเริ่มต้นในช่วงปลายยุค 90 ที่ทำงานบนเดสก์ทอปที่มองเช่นนี้
จริงอยู่ที่ฮาร์ดแวร์ของคุณมีขนาดเล็กกว่าแล็ปท็อปส่วนใหญ่ แต่คุณยังคงล้ำหน้ากว่านี้อยู่
เมื่อมีการค้นหาแบบขนานจำนวนมากเกิดขึ้นคุณจะไม่มีเธรดผู้ทำงานเหล่านั้นหมด เมื่อสิ่งนั้นเกิดขึ้นเคียวรีจะรอให้เธรดดำเนินต่อไป นอกจากนี้ยังมีที่SOS_SCHEDULER_YIELD
มาด้วยคำค้นหากำลังปิดซีพียูและไม่กลับมาเป็นเวลานาน ฉันไม่เห็นการปิดกั้นใด ๆ รอดังนั้นคุณน่าจะเป็นเพียงแค่ทั้งหมดที่อัดแน่นไปด้วยความเท่าเทียมกันภายในแบบสอบถามแบบสอบถามรอ
คุณทำอะไรได้บ้าง?
- ตรวจสอบให้แน่ใจว่าไม่มีสิ่งใดในโหมดสมดุลพลังงาน
- เปลี่ยน MAXDOP เป็น 2
- เปลี่ยนเกณฑ์ต้นทุนสำหรับการขนานเป็น 50
- ทำตามบทความ Jon K. ด้านบนเพื่อตรวจสอบสุขภาพ VM
- ใช้สคริปต์ที่เรียกว่า
sp_BlitzIndex
เพื่อค้นหาคำขอดัชนีที่ขาดหายไป
สำหรับการแก้ไขปัญหาอย่างละเอียดยิ่งขึ้นให้ตรวจสอบกระดาษขาวที่ฉันเขียนให้ Googleเกี่ยวกับการปรับขนาดฮาร์ดแวร์ในคลาวด์
หวังว่านี่จะช่วยได้!