ตัวสร้างโปรไฟล์ SQL มีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่?


11

ฉันกำลังประสบปัญหาที่ sql server 2008 ล้มเหลวสำหรับการโหลดสูง ฉันต้องการค้นหากรณีโหลดนั้นและจำเป็นต้องปรับโค้ดให้เหมาะสมเพื่อให้สามารถจัดการกับโหลดได้ ฉันพบบนอินเทอร์เน็ตว่าสามารถใช้ตัวสร้างโปรไฟล์ SQL เพื่อติดตามการโต้ตอบของฐานข้อมูลซึ่งสามารถวิเคราะห์ในภายหลังเพื่อค้นหาจุดที่แน่นอนที่เกิดปัญหา ฉันได้พบว่าเราจะเริ่มต้น sql profiler ได้อย่างไร แต่ตอนนี้คำถามของฉันคือการเริ่มตัวสร้างโปรไฟล์ sql ฉันจะส่งผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่


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

3
เหตุการณ์ที่ขยายอาจเป็นตัวเลือกที่มีน้ำหนักเบากว่า
Martin Smith

คำตอบ:


10

SQL Server Profiler เป็น GUI ที่ใช้การติดตามเซิร์ฟเวอร์ SQL ผ่านทางฝั่งไคลเอ็นต์ เนื่องจากลักษณะนี้คุณสามารถเห็นผลกระทบต่อประสิทธิภาพการทำงานที่รุนแรงน้อยถึงรุนแรงขึ้นกับสภาพแวดล้อม

SQL Server Profiler เหมาะอย่างยิ่งสำหรับการมองอย่างรวดเร็วในสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์ (หากเซิร์ฟเวอร์ฐานข้อมูลสามารถจัดการเวลาแฝงเพิ่มเติมได้) มันไม่ได้มีวัตถุประสงค์เพื่อให้ทำงานเป็นเวลานาน สำหรับการติดตามที่นานขึ้นให้ใช้การติดตามฝั่งเซิร์ฟเวอร์หรือ Extended Events


+1 แม้การติดตามตัวสร้างโปรไฟล์ที่สั้นมากขึ้นอยู่กับปัจจัยหลายอย่าง
Aaron Bertrand

3

หากคุณใช้การติดตามฝั่งเซิร์ฟเวอร์ผลกระทบต่อประสิทธิภาพสามารถลดลงได้


เซิร์ฟเวอร์และฐานข้อมูลของฉันติดตั้งในเครื่องเดียวกัน ตอนนี้ถ้าฉันเริ่ม sql profiler ผ่าน "สตูดิโอการจัดการ Microsoft SQL -> เครื่องมือ -> ตัวสร้างโปรไฟล์ SQL" ดังนั้นฉันจะคาดหวังถึงประสิทธิภาพการทำงานที่ลดลงเท่าใดและขึ้นอยู่กับปัจจัยอะไรบ้าง?

ขึ้นอยู่กับว่าเซิร์ฟเวอร์ของคุณมีงานยุ่งจำนวนเหตุการณ์และจำนวนคอลัมน์ที่คุณติดตามและการกรองของคุณ การกรองอาจส่งผลต่อทั้งสองทิศทาง - วิธีหนึ่งสามารถลดจำนวนแถวที่ส่งคืนไปยัง UI (ส่วนที่ทำให้ผู้สร้างโปรไฟล์เสียหายมากกว่าการติดตามฝั่งเซิร์ฟเวอร์) แต่ในทางกลับกันหากคุณเลือกไม่ดี ตัวกรอง (เช่นtextdata LIKE '%foo%') มันสามารถมีผลตรงกันข้าม มีตัวแปรมากมายเกินกว่าที่จะคาดหวังได้จากเวทมนต์คุณจะต้องลองดู คุณควรใช้การติดตามฝั่งเซิร์ฟเวอร์จริงๆ
Aaron Bertrand

ลองลิงค์นี้หากคุณไม่สามารถเข้าถึงต้นฉบับได้
Marc Lopez

3

ทุกสิ่งที่ผู้โพสต์ก่อนหน้าได้พูดนั้นถูกต้อง Profiler เป็นแอปพลิเคชั่นที่ใช้ DMO และปัจจุบันใช้ SMO เพื่อจับภาพเหตุการณ์การติดตาม สิ่งนี้เพิ่มค่าใช้จ่ายจำนวนมหาศาลเมื่อเทียบกับเพียงแค่ใช้การติดตามฝั่งเซิร์ฟเวอร์

SMO เป็น API ที่เพิ่ม "ระดับ" เพิ่มเติมให้กับกระบวนการติดตามพร้อมกับแอปพลิเคชันไคลเอนต์ Profiler การติดตามฝั่งเซิร์ฟเวอร์จะอ่านเหตุการณ์การติดตามโดยตรงจากคิวการทำธุรกรรมค่าใช้จ่ายที่เกิดขึ้นซึ่งไม่สำคัญ

ฉันสามารถเรียกใช้การติดตามฝั่งเซิร์ฟเวอร์ในสภาพแวดล้อม SQL Server ที่ประมวลผลธุรกรรมกว่า 10,000 รายการต่อวินาที การใช้ Profiler ในสภาพแวดล้อมเดียวกันเหล่านั้นจะทำให้อินสแตนซ์ฐานข้อมูลมาถึง ในสภาพแวดล้อมการผลิตใด ๆ หากคุณต้องการติดตามกิจกรรมฐานข้อมูลให้ใช้การติดตามฝั่งเซิร์ฟเวอร์เสมอ Profiler จะฆ่าอินสแตนซ์ฐานข้อมูล


2

ใช่ SQL Server Profiler มีผลกับประสิทธิภาพ

เมื่อคุณติดตามโดยใช้ GUI เหตุการณ์ทั้งหมดจะได้รับการประมวลผลและกรองแบบซิงโครนัสดังนั้นปัจจัยต่างๆเช่นโหลดเซิร์ฟเวอร์เวลาแฝงเครือข่ายกิจกรรมที่คุณรวบรวมและที่จัดเก็บกิจกรรมที่รวบรวมไว้

ตามคำแนะนำอื่น ๆ แนะนำให้ใช้การติดตามฝั่งเซิร์ฟเวอร์แทน GUI ที่ต้องการ อย่างไรก็ตามวิธีนี้เลิกใช้แล้วและควรใช้Extended Eventsแทน (หมายเหตุ: แม้จะใช้ Extended Events ซึ่งมีน้ำหนักเบากว่าการติดตามก็ยังสามารถเพิ่มปริมาณการโหลดที่ไม่พึงประสงค์ไปยังเซิร์ฟเวอร์ - ดูรายการในย่อหน้าที่สองของฉันเพื่อคิดวิธีลดค่าใช้จ่ายเมื่อตั้งค่าเหตุการณ์ เซสชั่น.)

ในกรณีของเซิร์ฟเวอร์ที่มีโหลดจำนวนมากคุณต้องระมัดระวังอย่างมากเกี่ยวกับข้อมูลที่ถูกรวบรวมเนื่องจากกระบวนการตรวจวัดอาจส่งผลกระทบต่อปัญหาที่กำลังถูกตรวจสอบ


0

ตัวสร้างโปรไฟล์ของเซิร์ฟเวอร์ SQL ทำงานในสองขั้นตอน: ก่อนอื่นให้คุณบันทึกการสืบค้นทั้งหมด จากนั้นคุณเรียกใช้ธุรกรรมทั่วไป (หรือปล่อยให้มันเข้าสู่ระบบการผลิต) สิ่งนี้จะสร้าง "โหลดทดสอบ" จากนั้นคุณทำการทำโปรไฟล์จริง (การวิเคราะห์) โดยใช้การทดสอบโหลด

การบันทึกไม่แพงมากโดยเฉพาะเมื่อเปรียบเทียบกับค่าใช้จ่ายในการสืบค้น


เซิร์ฟเวอร์และฐานข้อมูลของฉันติดตั้งในเครื่องเดียวกัน ตอนนี้ถ้าฉันเริ่ม sql profiler ผ่าน "สตูดิโอการจัดการ Microsoft SQL -> เครื่องมือ -> ตัวสร้างโปรไฟล์ SQL" ดังนั้นฉันจะคาดหวังถึงประสิทธิภาพการทำงานที่ลดลงเท่าใดและขึ้นอยู่กับปัจจัยอะไรบ้าง?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.