การใช้ SQL Profiler บนฐานข้อมูลที่อยู่ระหว่างการผลิต


28

ในฐานะนักพัฒนาฉันใช้ SQL Profiler บ่อยครั้ง มันเป็นเครื่องมือดีบั๊กทั้งเพื่อติดตามว่าโค้ดของฉันทำอะไรและวิเคราะห์ปัญหาด้านประสิทธิภาพ

แต่ฉันมักจะใช้มันในสภาพแวดล้อมการพัฒนาของฉันและในวิธีการควบคุมอย่างมาก

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

SQL Profiler สามารถนำไปใช้งานจริงในสภาพแวดล้อมที่ใช้งานจริงได้หรือไม่?

ความกังวลแรกของฉันคือมันจะลดประสิทธิภาพ

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

ใครใช้ SQL Profiler ในการผลิตหรือไม่


1
หากคุณรู้ว่าคุณกำลังมองหาอะไรอยู่คุณอาจไม่จำเป็นต้องมีการติดตามเช่นdba.stackexchange.com/questions/756/…
Gaius

คำตอบ:


19

การใช้เครื่องมือสร้างโปรไฟล์เซิร์ฟเวอร์ (เครื่องมือ GUI) เพื่อติดตามเซิร์ฟเวอร์ที่ใช้งานจริงไม่ใช่ความคิดที่ดี แต่มันก็ขึ้นอยู่กับโหลด ใช้การติดตาม sql ฝั่งเซิร์ฟเวอร์ (ดูโพรซีเดอร์ sp_trace_XXX ) แทน นอกจากนี้ฉันได้พบบทความ:

ผลกระทบด้านประสิทธิภาพ: การติดตาม Profiler กับการติดตาม SQL ฝั่งเซิร์ฟเวอร์ ,

การติดตามฝั่งเซิร์ฟเวอร์โดยอัตโนมัติใน SQL Server

หลีกเลี่ยงการก่อให้เกิดปัญหากับ Profiler

บางทีมันอาจจะน่าสนใจและมีประโยชน์

หนังสือออนไลน์พูดว่า:

  • เรียกใช้ Profiler จากระยะไกลแทนโดยตรงบนเซิร์ฟเวอร์
  • หลีกเลี่ยงการรวมถึงเหตุการณ์ที่เกิดขึ้นบ่อยครั้ง (เช่นล็อค: ได้มา) เว้นแต่จำเป็น
  • รวมเฉพาะคลาสของเหตุการณ์ที่จำเป็น
  • ระบุตัวกรองที่ จำกัด เพื่อลดจำนวนกิจกรรม
  • หลีกเลี่ยงข้อมูลที่ซ้ำซ้อน (เช่น SQL: BatchStarting และ SQL: BatchCompleted)
  • หลีกเลี่ยงการรันร่องรอยขนาดใหญ่ด้วย Profiler พิจารณาการติดตาม SQL ฝั่งเซิร์ฟเวอร์แทน
  • จำกัด ขนาดไฟล์ติดตามฝั่งเซิร์ฟเวอร์และจัดการการใช้พื้นที่

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

21

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


7
  1. ใช่การกระทำของการตรวจสอบจะต้องใช้ทรัพยากรบางอย่าง การรันบนเซิร์ฟเวอร์ที่โอเวอร์โหลดอาจทำให้เกิดการฆ่าได้

  2. คุณจะตรวจสอบภาระชีวิตจริง: การกระทำของคุณอาจหายไปจากเสียงของการโหลดนี้

บางครั้งเราเรียกใช้ในการผลิต ส่วนใหญ่มีตัวกรองข้อความสำหรับรหัสเฉพาะหรือด้วยตัวกรอง CPU / ระยะเวลาเพื่อดักจับการสืบค้นที่ยาวขึ้น และเราจะไม่พยายามรวบรวมแผนการดำเนินการของ XML หรือเรื่องไร้สาระเช่นนั้น

กุญแจสำคัญคือการรู้ว่าคุณกำลังมองหาอะไร: เราไม่ปล่อยให้มันทำงานและดักจับทุกอย่าง

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


2

Profiler จะแนะนำผลกระทบด้านประสิทธิภาพเสมอ

หากคุณใช้ SQL Server 2008R2 + คุณสามารถใช้เหตุการณ์เพิ่มเติมได้ สิ่งนี้ให้ข้อมูลส่วนใหญ่ที่คุณเห็นในตัวสร้างโปรไฟล์ที่มีประสิทธิภาพในการทำงานเพียงเล็กน้อย

หนังสือแนะนำออนไลน์ http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

คุณลักษณะนี้ได้รับการอัปเดตครั้งใหญ่ใน SQL Server 2012 ซึ่งขณะนี้มี GUI ใน SSMS แล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.