การตรวจสอบประสิทธิภาพของ MS SQL Server คำแนะนำการปฏิบัติ การใช้ SQL Profiler (ตัวสร้างโปรไฟล์)

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

SQL Profiler คืออะไร และเหตุใดจึงจำเป็น

SQLProfiler เป็นโปรแกรมที่มาพร้อมกับ MS เซิร์ฟเวอร์ SQLและได้รับการออกแบบเพื่อดูเหตุการณ์ทั้งหมดที่เกิดขึ้นในเซิร์ฟเวอร์ SQL หรืออีกนัยหนึ่งคือเพื่อบันทึกการติดตาม เหตุใดโปรแกรมเมอร์ 1C จึงต้องการ SQLProfiler อย่างน้อยก็เพื่อรับข้อความค้นหาใน SQL และดูแผนของมัน แน่นอนว่าสามารถทำได้ด้วยความช่วยเหลือของนิตยสารเทคโนโลยี แต่ต้องใช้ทักษะบางอย่าง และแผนในวารสารทางเทคนิคไม่ได้สวยงามและอ่านง่ายนัก ใน Profiler คุณสามารถดูได้ไม่เพียงแต่ข้อความเท่านั้น แต่ยังรวมถึงแผนการดำเนินการค้นหาแบบกราฟิกด้วยซึ่งในความคิดของฉันสะดวกกว่ามาก คุณยังสามารถใช้ตัวสร้างโปรไฟล์เพื่อกำหนด: คำขอที่นานกว่าเวลาที่กำหนด คำขอไปยังตารางเฉพาะที่รอการล็อก การหมดเวลาของการล็อกตาย และอื่นๆ อีกมากมาย...

การวิเคราะห์แบบสอบถามด้วย SQL Profiler

ตัวสร้างโปรไฟล์มักใช้เพื่อวิเคราะห์การสืบค้น ตามกฎแล้วเราไม่จำเป็นต้องติดตามข้อความค้นหาทั้งหมด บ่อยครั้งที่เราต้องดูว่าข้อความค้นหาในภาษา 1C ถูกแปลเป็น SQL อย่างไร และดูแผนการดำเนินการ ตัวอย่างเช่น เราอาจจำเป็นต้องใช้สิ่งนี้เพื่อพิจารณาว่าเหตุใดแบบสอบถามจึงทำงานช้า หรือเราอาจเขียนแบบสอบถามขนาดใหญ่และต้องการให้แน่ใจว่าเนื้อหาแบบสอบถาม SQL ไม่มีการเชื่อมต่อกับแบบสอบถามย่อย หากต้องการติดตามคำขอ ให้ทำดังต่อไปนี้:

1. เปิดตัว ตัวสร้างโปรไฟล์ SQLเริ่ม - โปรแกรมทั้งหมด - Microsoft SQL Server 2008 R2 - เครื่องมือเพิ่มประสิทธิภาพ - SQLProfiler
2. สร้างไฟล์การติดตามใหม่ - สร้างการติดตาม (Ctrl+N)
3. ระบุเซิร์ฟเวอร์ DBMS ที่ฐานข้อมูลของเราตั้งอยู่ และคลิก “เชื่อมต่อ”

โดยปกติแล้ว ไม่มีอะไรป้องกันคุณจากการติดตามเซิร์ฟเวอร์ DBMS ที่อยู่ในคอมพิวเตอร์เครื่องอื่น 4. ในหน้าต่าง “คุณสมบัติการติดตาม” ที่ปรากฏขึ้น ให้ไปที่แท็บที่สอง “เลือกเหตุการณ์”

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


คำอธิบายเหตุการณ์: ShowplanStatisticsProfile- แผนข้อความตอบสนองคำขอ
ShowplanXMLStatisticsProfile - แผนการดำเนินการแบบสอบถามแบบกราฟิก
RPC: เสร็จสมบูรณ์ - ขอข้อความหากดำเนินการตามขั้นตอน (หากดำเนินการคำขอ 1C พร้อมพารามิเตอร์)
SQL:BatchCompleted - ข้อความค้นหาหากถูกดำเนินการเป็นการสืบค้นปกติ (หากการสืบค้น 1C ถูกดำเนินการโดยไม่มีพารามิเตอร์)

6. ตอนนี้คุณต้องตั้งค่าตัวกรองสำหรับกิจกรรม หากยังไม่เสร็จสิ้น เราจะเห็นข้อความค้นหาสำหรับฐานข้อมูลทั้งหมดที่อยู่บนเซิร์ฟเวอร์ DBMS นี้ คลิกปุ่ม "ตัวกรองคอลัมน์" และระบุตัวกรองตามชื่อฐานข้อมูล

ตอนนี้เราจะเห็นเฉพาะคำขอติดตามไปยังฐานข้อมูล "TestBase_8_2" หากต้องการคุณสามารถตั้งค่าตัวกรองในฟิลด์อื่น ๆ ที่น่าสนใจที่สุดคือ: ระยะเวลา (ระยะเวลา), TextData (โดยปกติจะเป็นข้อความของคำขอ) และ RowCounts (จำนวนแถวที่ส่งคืนโดยคำขอ)

ตัวอย่างเช่น หากฉันต้องการรับคำขอทั้งหมดไปยังตาราง "_InfoRg4312" ที่ใช้เวลานานกว่า 3 วินาทีในฐานข้อมูล "TestBase_8_2" ฉันก็จะดำเนินการดังนี้
ก) กรองตามฐานข้อมูล ตัวอย่างที่แสดงด้านบน
b) กรองตามระยะเวลาเป็นมิลลิวินาที

C) กรองตามข้อความคำขอ


ที่นี่เราระบุหน้ากาก หากคุณต้องการติดตามคำค้นหาที่เข้าถึงหลายตาราง ให้สร้างองค์ประกอบต่างๆ ในส่วน "คล้ายกับ" เงื่อนไขตัวกรองทั้งหมดทำงานร่วมกัน

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


จากซ้ายไปขวา: ยางลบ - ล้างหน้าต่างการติดตาม เริ่ม - เริ่มการติดตาม หยุดชั่วคราว - หยุดการติดตามชั่วคราว คลิกที่เริ่มดำเนินการติดตามต่อ หยุด - หยุดการติดตาม

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

9. มาดำเนินการคำขอในคอนโซลแบบสอบถาม 1C และดูว่าคำขอดังกล่าวสะท้อนให้เห็นอย่างไรในตัวสร้างโปรไฟล์


ร่องรอยแสดงให้เห็นว่ามีคำขอหลายรายการ และมีเพียงคำขอเดียวเท่านั้นที่เป็นคำขอของเรา คำขออื่น ๆ เป็นการร้องขอบริการ

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

11. ถ้าเราขึ้นไปรายการหนึ่งเราจะดูแผนแบบสอบถามได้ รูปแบบกราฟิก.
ดังที่เห็นได้จากแผน การค้นหาจะดำเนินการตามดัชนีตามราคา แม้ว่าแผนนี้จะไม่สามารถเรียกได้ว่าเป็นอุดมคติก็ตาม ดัชนีไม่ครอบคลุม รับฟิลด์โค้ดและชื่อโดยใช้ KeyLookup ซึ่งใช้เวลา 50%


การใช้เมนูบริบทสามารถบันทึกแผนกราฟิกได้ แยกไฟล์ด้วยส่วนขยาย *.SQLPlan และเปิดในเครื่องมือสร้างโปรไฟล์บนคอมพิวเตอร์เครื่องอื่น หรือใช้โปรแกรม SQL Sentry Plan Explorer ขั้นสูงกว่า

12. หากเราไปไกลกว่านั้น เราจะเห็นแผนการสืบค้นเดียวกัน แต่อยู่ในรูปแบบข้อความ แผนนี้แสดงใน TZ, TsUP และเครื่องมือตรวจสอบประสิทธิภาพ 1C อื่น ๆ เพื่อวิเคราะห์ ฉันแนะนำให้ใช้ขั้นสูง โปรแกรมแก้ไขข้อความย้อนแสง เช่น Notepad++

13. ฉันใช้เมนู "บันทึกไฟล์เป็น" การติดตามทั้งหมดสามารถบันทึกไว้ได้ รูปแบบต่างๆ:
ก) ในรูปแบบของตัวสร้างโปรไฟล์เอง เช่น มีนามสกุล *.trc
b) ในรูปแบบ xml
c) คุณสามารถสร้างเทมเพลตจากการติดตามได้ ดูจุดต่อไป
d) คุณสามารถบันทึกการติดตามเป็นตารางฐานข้อมูลได้ วิธีที่สะดวกหากเราต้องการค้นหาคำขอที่ช้าที่สุดในการติดตามทั้งหมด หรือเลือกคำขอตามพารามิเตอร์บางตัว เป็นต้น ไฟล์ - บันทึกเป็น - ตารางการติดตาม - เลือกเซิร์ฟเวอร์ DBMS และเชื่อมต่อกับมัน ถัดไปคุณจะต้องเลือกฐานข้อมูลบนเซิร์ฟเวอร์ที่ระบุและระบุชื่อของตารางที่จะบันทึกการติดตาม คุณสามารถเลือกตารางที่มีอยู่หรือเขียนชื่อใหม่ จากนั้นตารางจะถูกสร้างขึ้นโดยอัตโนมัติในฐานข้อมูลที่เลือก

ควรคำนึงว่า Duration ถูกเก็บไว้ในตารางในหน่วยล้านวินาที และเมื่อแสดงผลลัพธ์ แนะนำให้แปลงค่าเป็นมิลลิวินาที คอลัมน์ RowNumber จะถูกเพิ่มลงในตารางด้วย ซึ่งจะแสดงหมายเลขของแถวนี้ในการติดตาม

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

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

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

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

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

SQL Profiler คืออะไร และเหตุใดจึงจำเป็น

SQL Profiler เป็นโปรแกรมที่มาพร้อมกับ MS SQL Server และได้รับการออกแบบเพื่อดูเหตุการณ์ทั้งหมดที่เกิดขึ้นในเซิร์ฟเวอร์ SQL หรืออีกนัยหนึ่งคือเพื่อบันทึกการติดตาม

เหตุใดโปรแกรมเมอร์ 1C จึงต้องการ SQL Profiler

อย่างน้อยก็เพื่อรับข้อความค้นหาใน SQL และดูแผนของมัน แน่นอนว่าสามารถทำได้ด้วยความช่วยเหลือของนิตยสารเทคโนโลยี แต่ต้องใช้ทักษะบางอย่าง และแผนในวารสารทางเทคนิคไม่ได้สวยงามและอ่านง่ายนัก

ใน Profiler คุณสามารถดูได้ไม่เพียงแต่ข้อความเท่านั้น แต่ยังรวมถึงแผนการดำเนินการค้นหาแบบกราฟิกด้วยซึ่งในความคิดของฉันสะดวกกว่ามาก

คุณยังสามารถใช้ตัวสร้างโปรไฟล์เพื่อกำหนด:

คำขอนานกว่าเวลาที่กำหนด

แบบสอบถามกับตารางเฉพาะ

รอการปิดกั้น

หมดเวลา

การหยุดชะงัก

และอีกมากมาย...

การวิเคราะห์แบบสอบถามด้วย SQL Profiler

ตัวสร้างโปรไฟล์มักใช้เพื่อวิเคราะห์การสืบค้น ตามกฎแล้วเราไม่จำเป็นต้องติดตามข้อความค้นหาทั้งหมด บ่อยครั้งที่เราต้องดูว่าข้อความค้นหาในภาษา 1C ถูกแปลเป็น SQL อย่างไร และดูแผนการดำเนินการ ตัวอย่างเช่น เราอาจจำเป็นต้องใช้สิ่งนี้เพื่อพิจารณาว่าเหตุใดแบบสอบถามจึงทำงานช้า หรือเราอาจเขียนแบบสอบถามขนาดใหญ่และต้องการให้แน่ใจว่าเนื้อหาแบบสอบถาม SQL ไม่มีการเชื่อมต่อกับแบบสอบถามย่อย

หากต้องการรับคำขอในการติดตาม ให้ทำดังต่อไปนี้:

1. เรียกใช้ตัวสร้างโปรไฟล์ SQL

เริ่ม - โปรแกรมทั้งหมด - Microsoft SQL Server 2008 R2 - เครื่องมือเพิ่มประสิทธิภาพ - SQL Profiler

2. สร้างการติดตามใหม่

ไฟล์ – สร้างการติดตาม (Ctrl+N)
3. ระบุเซิร์ฟเวอร์ DBMS ที่ฐานข้อมูลของเราตั้งอยู่ และคลิก “เชื่อมต่อ”

โดยปกติแล้ว ไม่มีอะไรป้องกันคุณจากการติดตามเซิร์ฟเวอร์ DBMS ที่อยู่ในคอมพิวเตอร์เครื่องอื่น

4. ในหน้าต่าง “คุณสมบัติการติดตาม” ที่ปรากฏขึ้น ให้ไปที่แท็บที่สอง “เลือกเหตุการณ์”

5. ตอนนี้เราจำเป็นต้องระบุเหตุการณ์และคุณสมบัติของเหตุการณ์เหล่านี้ที่เราต้องการเห็นในการติดตาม

เราต้องการแบบสอบถามและแผนการสืบค้น ดังนั้นเราจึงจำเป็นต้องเปิดใช้งานเหตุการณ์ที่เหมาะสม หากต้องการแสดงรายการคุณสมบัติและเหตุการณ์ทั้งหมด ให้เปิดใช้งานแฟล็ก "แสดงคอลัมน์ทั้งหมด" และ "แสดงกิจกรรมทั้งหมด"

คำอธิบายของเหตุการณ์:

ShowplanStatisticsProfile – แผนการดำเนินการคิวรีข้อความ

ShowplanXMLStatisticsProfile – แผนการดำเนินการคิวรีแบบกราฟิก

RPC: เสร็จสมบูรณ์ – ขอข้อความหากดำเนินการตามขั้นตอน (หากดำเนินการคำขอ 1C พร้อมพารามิเตอร์)

SQL:BatchCompleted – ข้อความค้นหาหากถูกดำเนินการเป็นการสืบค้นปกติ (หากการสืบค้น 1C ถูกดำเนินการโดยไม่มีพารามิเตอร์)

6. ตอนนี้คุณต้องตั้งค่าตัวกรองสำหรับกิจกรรม หากยังไม่เสร็จสิ้น เราจะเห็นข้อความค้นหาสำหรับฐานข้อมูลทั้งหมดที่อยู่บนเซิร์ฟเวอร์ DBMS นี้

คลิกปุ่ม "ตัวกรองคอลัมน์" และระบุตัวกรองตามชื่อฐานข้อมูล

ตอนนี้เราจะเห็นเฉพาะคำขอติดตามไปยังฐานข้อมูล "TestBase_8_2" เท่านั้น

หากต้องการ คุณสามารถกรองตามฟิลด์อื่นๆ ได้ สิ่งที่น่าสนใจที่สุดคือ: ระยะเวลา (ระยะเวลา), TextData (โดยปกติจะเป็นข้อความของคำขอ) และ RowCounts (จำนวนแถวที่ส่งคืนโดยคำขอ)

ตัวอย่างเช่น หากฉันต้องการรับคำขอทั้งหมดไปยังตาราง "_InfoRg4312" ที่ใช้เวลานานกว่า 3 วินาทีในฐานข้อมูล "TestBase_8_2" ฉันก็จะดำเนินการดังนี้:

ก) กรองตามฐานข้อมูล ตัวอย่างที่แสดงด้านบน

b) กรองตามระยะเวลาเป็นมิลลิวินาที

c) กรองตามข้อความคำขอ

ที่นี่เราระบุหน้ากาก หากคุณต้องการติดตามคำค้นหาที่เข้าถึงหลายตาราง ให้สร้างองค์ประกอบต่างๆ ในส่วน "คล้ายกับ" เงื่อนไขตัวกรองทั้งหมดทำงานร่วมกัน

7. ตอนนี้คุณสามารถเรียกใช้การติดตามได้แล้ว คลิก "เรียกใช้" หลังจากนั้นการติดตามจะเริ่มทำงาน และคุณจะเห็นเหตุการณ์ที่คุณกำหนดค่าให้แสดงและที่อยู่ภายใต้ตัวกรองของคุณ

คุณสามารถใช้ปุ่มบนแถบคำสั่งเพื่อควบคุมการติดตาม

จากซ้ายไปขวา:

ยางลบ – ล้างหน้าต่างการติดตาม

เริ่มต้น – เริ่มการติดตาม

หยุดชั่วคราว – หยุดการติดตามชั่วคราว เมื่อคุณคลิกที่เริ่ม ติดตามประวัติต่อ

หยุด – หยุดการติดตาม

8. หน้าต่างการติดตามประกอบด้วยสองส่วน ที่ด้านบนสุดคือเหตุการณ์และคุณสมบัติของเหตุการณ์

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

9. มาดำเนินการคำขอในคอนโซลแบบสอบถาม 1C และดูว่าคำขอดังกล่าวสะท้อนให้เห็นอย่างไรในตัวสร้างโปรไฟล์

ร่องรอยแสดงให้เห็นว่ามีคำขอหลายรายการ และมีเพียงคำขอเดียวเท่านั้นที่เป็นคำขอของเรา คำขออื่น ๆ เป็นการร้องขอบริการ

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

ในกรณีของฉัน แบบสอบถามทำงานเป็นเวลา 2 มิลลิวินาที อ่านเชิงตรรกะ 4 ครั้งและส่งคืน 1 แถว

11. ถ้าเราขึ้นไปหนึ่งเหตุการณ์เราจะเห็นแผนการสืบค้นในรูปแบบกราฟิก

ดังที่เห็นได้จากแผน การค้นหาจะดำเนินการตามดัชนีตามราคา แม้ว่าแผนนี้จะไม่สามารถเรียกได้ว่าเป็นอุดมคติก็ตาม ดัชนีไม่ครอบคลุม รับฟิลด์โค้ดและชื่อโดยใช้ KeyLookup ซึ่งใช้เวลา 50%

เมื่อใช้เมนูบริบท แผนกราฟิกสามารถบันทึกเป็นไฟล์แยกต่างหากด้วยส่วนขยาย *.SQLPlan และเปิดในตัวสร้างโปรไฟล์บนคอมพิวเตอร์เครื่องอื่น หรือใช้โปรแกรม SQL Sentry Plan Explorer ขั้นสูงกว่า

12. หากเราไปไกลกว่านั้น เราจะเห็นแผนการสืบค้นเดียวกัน แต่อยู่ในรูปแบบข้อความ

แผนนี้แสดงใน TZ, TsUP และเครื่องมือตรวจสอบประสิทธิภาพ 1C อื่น ๆ เพื่อวิเคราะห์ ฉันแนะนำให้ใช้โปรแกรมแก้ไขข้อความขั้นสูงที่มีแบ็คไลท์ เช่น Notepad++

ก) ในรูปแบบของตัวสร้างโปรไฟล์เอง เช่น มีนามสกุล *.trc

b) ในรูปแบบ xml

c) คุณสามารถสร้างเทมเพลตจากการติดตามได้ ดูจุดถัดไป

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

ควรคำนึงว่า Duration ถูกเก็บไว้ในตารางในหน่วยล้านวินาที และเมื่อแสดงผลลัพธ์ แนะนำให้แปลงค่าเป็นมิลลิวินาที คอลัมน์ RowNumber จะถูกเพิ่มลงในตารางด้วย ซึ่งจะแสดงหมายเลขของแถวนี้ในการติดตาม

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

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

หากต้องการสร้างเทมเพลต ให้ใช้เมนู ไฟล์ - เทมเพลต - เทมเพลตใหม่

บนแท็บแรกทุกอย่างนั้นเรียบง่าย เราระบุประเภทเซิร์ฟเวอร์ ชื่อของเทมเพลต และหากจำเป็น ให้ตั้งค่าสถานะเพื่อใช้เทมเพลตนี้เป็นค่าเริ่มต้น

บนแท็บที่สอง เราเลือกเหตุการณ์และกำหนดค่าตัวกรอง ดังที่แสดงไว้ด้านบน

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

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

หากคุณยังคงมีคำถามเกี่ยวกับการใช้ SQL Profiler ถามพวกเขาในความคิดเห็น ฉันยินดีที่จะตอบ

วันนี้เราจะมาวัดประสิทธิภาพของแอปพลิเคชันของเราโดยใช้ วิชวลสตูดิโอเครื่องมือสร้างโปรไฟล์.

เครื่องมือสร้างโปรไฟล์ Visual Studioช่วยให้นักพัฒนาสามารถวัดและประเมินประสิทธิภาพของแอปพลิเคชันและโค้ดได้ เครื่องมือเหล่านี้ถูกสร้างขึ้นอย่างสมบูรณ์ใน IDE เพื่อให้นักพัฒนาควบคุมได้อย่างราบรื่น
ในบทช่วยสอนนี้ เราจะอธิบายโปรไฟล์แอปพลิเคชันทีละขั้นตอน พีเพิลแทร็กซ์โดยใช้ การสุ่มตัวอย่างและ เครื่องมือวัดเทคนิคการทำโปรไฟล์เพื่อระบุปัญหาในประสิทธิภาพของแอปพลิเคชัน

รูปภาพมากมาย

การตระเตรียม

ในการทำงานกับคู่มือนี้ คุณจะต้องมี:
  • ไมโครซอฟต์วิชวลสตูดิโอ 2010
  • ความรู้โดยเฉลี่ยของภาษา C#
  • สำเนาของแอปพลิเคชันทดสอบ PeopleTrax คุณสามารถดาวน์โหลดได้จาก MSDN Code Gallery

วิธีการทำโปรไฟล์

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

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

เครื่องมือวัด
เครื่องมือวัด— รวบรวมข้อมูลโดยละเอียดเกี่ยวกับเวลาการทำงานของแต่ละฟังก์ชันที่ถูกเรียก ใช้เพื่อวัดประสิทธิภาพของการดำเนินการ I/O

วิธีการฝังโค้ดลงในไฟล์ไบนารีที่บันทึกข้อมูลเวลาสำหรับแต่ละฟังก์ชันในไฟล์ และสำหรับแต่ละฟังก์ชันที่ถูกเรียกใช้ภายในไฟล์

รายงานประกอบด้วย 4 ค่าเพื่อระบุเวลาที่ผ่านไป:

  • รวมที่ผ่านไปแล้ว- เวลาทั้งหมดที่ใช้ในการปฏิบัติหน้าที่
  • รวมแอปพลิเคชัน- เวลาที่ใช้ในการเรียกใช้ฟังก์ชัน ไม่รวมเวลาเรียกระบบปฏิบัติการ
  • เอกสิทธิ์เฉพาะที่ผ่านไปแล้ว- เวลาที่ใช้ในการรันโค้ดในร่างกาย เวลาที่ใช้โดยฟังก์ชันที่เรียกโดยฟังก์ชันเป้าหมาย
  • แอปพลิเคชันพิเศษ- เวลาที่ใช้ในการรันโค้ดในร่างกาย ช่วยลดเวลาที่ใช้ในการโทรออก ระบบปฏิบัติการและเวลาที่ใช้ในการดำเนินการฟังก์ชันที่เรียกโดยฟังก์ชันเป้าหมาย
เห็นพ้องต้องกัน
เห็นพ้องต้องกัน– รวบรวมข้อมูลเกี่ยวกับแอปพลิเคชันแบบมัลติเธรด (สำหรับวิธีการดีบักแอปพลิเคชันแบบมัลติเธรด โปรดดูที่ "คำแนะนำในการดีบักแอปพลิเคชันแบบมัลติเธรดใน Visual Studio 2010") วิธีการนี้รวบรวมข้อมูลการโทรสแต็กโดยละเอียดทุกครั้งที่เธรดที่แข่งขันกันถูกบังคับให้รอการเข้าถึงทรัพยากร
หน่วยความจำ .NET
หน่วยความจำ .NET- Profiler รวบรวมข้อมูลเกี่ยวกับประเภท ขนาด และจำนวนของอ็อบเจ็กต์ที่สร้างขึ้นในการแจกจ่ายหรือถูกทำลายโดยตัวรวบรวมขยะ การทำโปรไฟล์หน่วยความจำแทบไม่มีผลกระทบต่อประสิทธิภาพของแอปพลิเคชันโดยรวม
การโต้ตอบระดับ
การโต้ตอบระดับ– เพิ่มข้อมูลลงในไฟล์โปรไฟล์เกี่ยวกับการโทรแบบซิงโครนัส ADO.NETระหว่างหน้า เอเอสพี.เน็ตหรือแอปพลิเคชันอื่น ๆ และ SQLเซิร์ฟเวอร์ ข้อมูลประกอบด้วยจำนวนและเวลาในการโทร ตลอดจนเวลาสูงสุดและต่ำสุด

นี่เป็นการสรุปการพิจารณาวิธีการจัดทำโปรไฟล์ของเรา และเราจะเรียนรู้วิธีการทำโปรไฟล์แอปพลิเคชันต่อไป

การทำโปรไฟล์ด้วยวิธีสุ่มตัวอย่าง

การสุ่มตัวอย่างเป็นเทคนิคการทำโปรไฟล์ที่จะสำรวจกระบวนการที่เป็นปัญหาเป็นระยะๆ เพื่อกำหนดฟังก์ชันที่ใช้งานอยู่ ผลลัพธ์จะแสดงจำนวนครั้งที่ฟังก์ชันอยู่ที่จุดเริ่มต้นของ call stack ระหว่างการทดสอบ
การทำโปรไฟล์
เปิดโครงการทดสอบ พีเพิลแทร็กซ์- ตั้งค่าคอนฟิกเป็น ปล่อย(ข้อมูลเพิ่มเติมถูกสร้างขึ้นในเวอร์ชัน Debug เพื่อดีบักแอปพลิเคชัน และจะส่งผลเสียต่อความแม่นยำของผลลัพธ์การทำโปรไฟล์)

ในเมนู วิเคราะห์คลิกที่ เปิดตัวช่วยสร้างประสิทธิภาพ.

ในขั้นตอนนี้ คุณต้องเลือกวิธีการจัดทำโปรไฟล์ เลือก CPU Sampling (แนะนำ) แล้วคลิกถัดไป

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

ตัวสร้างโปรไฟล์สร้างรายงาน (*.vsp)

การวิเคราะห์รายงานวิธีการสุ่มตัวอย่าง
ใน สรุปกราฟการใช้งาน CPU จะปรากฏขึ้นตลอดระยะเวลาการทำโปรไฟล์ รายการ เส้นทางร้อนแรงแสดงเธรดการโทรที่แสดงกิจกรรมมากที่สุด และในรายการ ฟังก์ชั่นการทำงานส่วนบุคคลส่วนใหญ่(ชื่อที่พูดเพื่อตัวเอง) - ฟังก์ชั่นที่ครอบครองข โอเวลาประมวลผลนานขึ้นในส่วนของฟังก์ชันเหล่านี้

กำลังดูรายการครับ เส้นทางร้อนแรงเราเห็นว่าวิธีการนั้น PeopleNS.คน.GetNamesครองตำแหน่งเกือบสุดท้ายในกระทู้ท้าทาย จากนั้นจึงสามารถศึกษาได้อย่างใกล้ชิดยิ่งขึ้นเพื่อปรับปรุงประสิทธิภาพ คลิกที่ PeopleNS.คน.GetNamesและมันจะเปิดต่อหน้าเรา รายละเอียดฟังก์ชั่น.

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

มุมมองรหัสฟังก์ชันแสดงรหัสวิธีการเมื่อพร้อมใช้งานและไฮไลต์บรรทัดที่แพงที่สุดในวิธีที่เลือก เมื่อเลือกวิธีการแล้ว รับชื่อคุณจะเห็นว่ามันอ่านสตริงจากทรัพยากรแอปพลิเคชันโดยใช้ เครื่องอ่านสตริงโดยเพิ่มแต่ละบรรทัดเข้าไป ArrayList- ไม่มีวิธีที่ชัดเจนในการปรับปรุงส่วนนี้

เพราะ PeopleNS.People.GetPeopleคนเดียวที่โทรมา รับชื่อ- กด รับคน- วิธีการนี้จะส่งกลับ ArrayListวัตถุ PersonInformationNS.PersonInformationพร้อมชื่อบุคคลและบริษัทที่ส่งคืนโดยวิธีการ รับชื่อ- แต่ถึงอย่างไร, รับชื่อเรียกสองครั้งทุกครั้งที่สร้าง ข้อมูลบุคคล- (ซึ่งแสดงโดยการเน้นสีเหลืองและสีแดง) แน่นอนว่า คุณสามารถปรับวิธีการให้เหมาะสมได้อย่างง่ายดายด้วยการสร้างรายการเพียงครั้งเดียวที่จุดเริ่มต้นของวิธีการ

เวอร์ชันทางเลือก รับคนอยู่ในโค้ดด้วย และเราจะเปิดใช้งานทันที ในการทำเช่นนี้คุณต้องตัดสินใจ เพิ่มประสิทธิภาพ_GETPEOPLEเป็นสัญลักษณ์การคอมไพล์แบบมีเงื่อนไขในหน้าต่างคุณสมบัติโปรเจ็กต์ ประชากรและ พีเพิลแทร็กซ์. ใช่ หากคุณต้องการทำการทดลองของฉันซ้ำ คุณต้องแก้ไขข้อผิดพลาดในโครงการ ในตัวสร้างคลาสที่ปรับให้เหมาะสม ชื่อของทรัพยากรไม่ได้เขียนอย่างถูกต้อง: คุณต้องมี PeopleNS.Resources ร่วมกับ PeopleNS.Resource หากไม่เปลี่ยนแปลงทุกอย่างจะจบลงด้วยข้อผิดพลาดร้ายแรง

วิธีการปรับให้เหมาะสมจะแทนที่วิธีเก่าในรุ่นถัดไป

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

หากต้องการเปรียบเทียบสองรายงาน ให้เลือกทั้งสองรายงานและ RMB เปรียบเทียบรายงานประสิทธิภาพ- คอลัมน์เดลต้าแสดงความแตกต่างในประสิทธิภาพของเวอร์ชัน พื้นฐานจากภายหลัง การเปรียบเทียบ- เลือก รวมตัวอย่าง %และสมัคร

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

การทำโปรไฟล์โดยใช้วิธีเครื่องมือวัด

วิธีการนี้มีประโยชน์สำหรับการทำโปรไฟล์ I/O การเขียนดิสก์ และการสื่อสารเครือข่าย วิธีนี้จะให้ข้อมูลมากกว่าวิธีก่อนหน้า แต่จะมีค่าใช้จ่ายมากกว่า ไบนารีที่ได้รับหลังจากการแทรก รหัสเพิ่มเติมมีขนาดใหญ่กว่าปกติและไม่ได้มีไว้สำหรับการใช้งาน

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

การทำโปรไฟล์
ใน เครื่องมือสำรวจประสิทธิภาพเลือก เครื่องมือวัดและคลิกเริ่มการสร้างโปรไฟล์ คลิกรับบุคคล หลังจากโหลดบุคคลแล้ว ให้รอ 10 วินาทีแล้วคลิกส่งออกข้อมูล ปิดแผ่นจดบันทึกและโปรแกรม เครื่องมือสร้างโปรไฟล์จะสร้างรายงาน
การวิเคราะห์
ผู้สร้างโปรไฟล์จะแสดงรูปภาพนี้:

เราไม่ได้รับข้อมูลที่เราต้องการ มากรองข้อมูลกันดีกว่า เรารอเป็นพิเศษ 10 วินาทีเพื่อกรองข้อมูลโปรไฟล์ที่ไม่จำเป็นอีกต่อไปออก ทำเครื่องหมายตั้งแต่วันที่ 13 ถึงท้ายรายการแล้วกด กรองตามการเลือก- ผลลัพธ์อื่น:

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

เป็นที่ชัดเจนว่า PeopleTrax.Form1.ExportDataเป็นวิธีเดียวที่เรียก คอนกัต- คลิก PeopleTrax.Form1.ExportDataในวิธีการโทร ( ฟังก์ชันที่เรียกใช้ฟังก์ชันนี้).

มาวิเคราะห์วิธีการในหน้าต่างโค้ดกัน โปรดทราบว่าไม่มีการโทรโดยตรงไปยัง Concat นอกจากนี้ยังมีการใช้ตัวถูกดำเนินการด้วย += ซึ่งคอมไพลเลอร์จะแทนที่ด้วยเมธอด System.String.Concat- ดังที่เกือบทุกคนรู้อยู่แล้วว่าการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นกับสตริงใน .NET จะนำไปสู่การทำลายล้าง รุ่นเก่าสตริงและสร้างสตริงที่แก้ไข โชคดีที่ .NET มีคลาส StringBuilderซึ่งออกแบบมาสำหรับงานประเภทนี้

โครงการมีวิธีการปรับให้เหมาะสมแล้วโดยใช้ StringBuilder- ในโครงการ PeopleTrax ให้เพิ่มตัวแปรการคอมไพล์ ปรับให้เหมาะสม_ส่งออกข้อมูล- เราบันทึกและเรียกใช้เครื่องมือสร้างโปรไฟล์อีกครั้งและเปรียบเทียบรายงาน เห็นได้ชัดทันที (และเข้าใจได้เชิงตรรกะ) ว่าเราปรับการโทร Concat ให้เหมาะสม (จาก 6,000 เป็น 0 ครั้ง)

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

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

ปุ๊ก 49.2. ใน ในตัวอย่างนี้โปรโตคอลมิเตอร์จะบันทึกข้อมูล

เกี่ยวกับประสิทธิภาพของ SQL Server ในไดเรกทอรี C:\Perf Logs

ยูทิลิตี้ SQL Server Profiler สามารถเปิดใช้งานได้จากเมนูเครื่องมือใน Management Studio หรือโดยตรงจากโฟลเดอร์ SQL Server 2005 เมนูระบบเริ่ม. หากต้องการดูกิจกรรม คุณต้องกำหนดการติดตามใหม่หรือใช้ไฟล์ที่มีอยู่

ด้วยการเปิดตัว SP1 ทำให้ SQL Server Profiler ได้รับความสนใจ! ติดตามชุดข้อมูลขนาดใหญ่บนคอมพิวเตอร์ขนาดใหญ่

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

การกำหนดร่องรอยใหม่

เมื่อมีการสร้างการติดตามใหม่ (โดยใช้คำสั่งเมนู File^New Trace หรือปุ่มแถบเครื่องมือ New Trace) การเชื่อมต่อใหม่ไปยัง SQL Server จะถูกสร้างขึ้นเช่นกัน และกล่องโต้ตอบคุณสมบัติการติดตามจะเปิดขึ้น (รูปที่ 49.4) ในแท็บทั่วไปของหน้าต่างนี้ การติดตามได้รับการกำหนดค่า (โดยเฉพาะชื่อ ตำแหน่งไฟล์ ฯลฯ) และในแท็บการเลือกเหตุการณ์ เหตุการณ์ ข้อมูล และตัวกรองที่จะบันทึกจะถูกกำหนด หากกำลังติดตาม พารามิเตอร์เหล่านี้สามารถดูได้แต่ไม่สามารถเปลี่ยนแปลงได้ คุณสามารถบันทึกการกำหนดค่าการติดตามเป็นเทมเพลตเพื่อให้สร้างการติดตามใหม่ได้ง่ายขึ้นในอนาคต

ข้าว. 49.4. แท็บการเลือกเหตุการณ์ของหน้าต่าง Trace Properties ช่วยให้คุณสามารถเลือกเหตุการณ์ที่ติดตามโดยยูทิลิตี้ Profiler

การติดตามสามารถดูได้แบบเรียลไทม์ แต่ข้อมูลอาจถูกเขียนลงในไฟล์หรือตาราง SQL Server ในเวลาเดียวกัน สิ่งนี้มีประโยชน์ในภายหลัง การวิเคราะห์เชิงคาดการณ์เปรียบเทียบกับข้อมูลตัวนับการตรวจสอบระบบ หรือเพื่อนำเข้าไปยังยูทิลิตี้ Database Engine Tuning Advisor

เมื่อการอ่านถูกเขียนลงในไฟล์ การอ่านจะถูกต่อเข้าด้วยกันเป็นเชนขนาด 128 KB เพื่อปรับปรุงประสิทธิภาพ ในทำนองเดียวกัน เมื่อเขียนลงในตาราง ข้อมูลจะถูกจัดกลุ่มออกเป็นหลายแถว

หากต้องการบันทึกข้อมูลที่ Profiler จับไว้เพื่อการวิเคราะห์ในภายหลัง ให้ใช้ประสิทธิภาพสูง วิธีการไฟล์เช่นเดียวกับการติดตามเซิร์ฟเวอร์ (เราจะพูดถึงเรื่องนี้ในภายหลัง) หากคุณต้องการวิเคราะห์ข้อมูลโดยใช้ คำแนะนำ T-SQLให้ใช้วิธีการเดียวกันทุกประการ แต่หลังจากเสร็จสิ้นเซสชันการติดตาม ให้เปิดไฟล์ผลลัพธ์ในยูทิลิตี Profiler และเลือกคำสั่ง File^Save As^Table จากเมนู

การเลือกกิจกรรม

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

I เหตุการณ์ SQL Batch Completed ขึ้นอยู่กับการดำเนินการของแบตช์ T-SQL

SVS โดยรวม (แพ็กเก็ตคั่นด้วยตัวยุติ) ไม่ใช่คำสั่งเฉพาะบุคคล

- * จากข้อมูลนี้ Profiler จะบันทึกข้อมูลเกี่ยวกับเหตุการณ์เดียวเท่านั้น

Simo ขึ้นอยู่กับความยาวของแพ็คเกจ เพื่อบันทึกการดำเนินการตามคำสั่งแต่ละรายการ

DML ใช้เหตุการณ์คำสั่ง SQL Complete

ไม่ใช่ทุกเหตุการณ์ที่สามารถใช้เพื่อสร้างการติดตามได้ ตัวอย่างเช่น เหตุการณ์ SQL Batch Start สามารถเล่นซ้ำได้ แต่เหตุการณ์ SQL Batch Complete ไม่สามารถทำได้

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

การกรองเหตุการณ์

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

ข้าว. 49.6. SQL Server Profiler สามารถรวมข้อมูลการตรวจสอบประสิทธิภาพและซิงโครไนซ์กับเหตุการณ์ที่ได้รับการตรวจสอบ

การใช้การติดตาม SQL

โดยทั่วไปแล้ว SQL Profiler จะใช้แบบโต้ตอบและเพียงพอสำหรับการรวบรวมข้อมูลเป็นระยะๆ อย่างไรก็ตาม การติดตามที่รันระยะยาวสามารถสะสมเรกคอร์ดนับแสนได้อย่างง่ายดาย ซึ่งอาจทำให้เกิดปัญหาเฉพาะเจาะจงมากบนเวิร์กสเตชันที่กำลังรันการติดตาม วิธีแก้ปัญหาอยู่ที่การสร้างบันทึกการติดตามโดยตรงบนเซิร์ฟเวอร์ การติดตามนี้จะทำให้โหลดเพิ่มเติมเล็กน้อยบนเซิร์ฟเวอร์ ในกรณีนี้ ไฟล์จะถูกเขียนเป็นบล็อกขนาด 128 KB

ใน ระบบอุตสาหกรรมการติดตามฝั่งเซิร์ฟเวอร์ การเขียนข้อมูลลงไฟล์บนเซิร์ฟเวอร์คือ วิธีที่ดีที่สุดรวบรวมข้อมูล

เกี่ยวกับประสิทธิภาพในขณะที่ลดภาระเพิ่มเติมบนเซิร์ฟเวอร์ให้เหลือน้อยที่สุด

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

เมื่อกำหนดค่าการติดตามและทดสอบใน SQL Server Profiler แล้ว ให้เลือก File^Export^Trace Definition^For SQL Server 2005 จากเมนูเพื่อสร้างสคริปต์ T-SQL ที่สามารถทำการติดตามฝั่งเซิร์ฟเวอร์ได้

I หากต้องการค้นหาว่าการติดตามใดกำลังทำงานบนเซิร์ฟเวอร์ ให้สอบถาม

มุมมอง Namic SVS ของระบบการควบคุม เมื่อคุณดูผลลัพธ์ I* ของการสืบค้นนี้ คุณจะเห็นการย้อนกลับเพิ่มเติม หมายเลข * ตัวแรกมักจะเรียกว่าการติดตามเริ่มต้นซึ่งรวบรวมข้อมูลสำหรับบันทึก SQL Server - ไม่สามารถหยุดได้

เมื่อต้องการหยุดการติดตามเซิร์ฟเวอร์ ใช้ขั้นตอนการจัดเก็บของระบบsp_trace_setstatus อาร์กิวเมนต์แรก (traceid) คือตัวระบุการติดตาม และอาร์กิวเมนต์ที่สองกำหนดลักษณะของการดำเนินการ ค่าศูนย์สำหรับพารามิเตอร์การดำเนินการจะทำให้การติดตามหยุด ค่าหนึ่งเพื่อเริ่มต้น และค่าสองเพื่อปิดและลบ รหัสต่อไปนี้หยุดการติดตามหมายเลข 2

ตัวสร้างโปรไฟล์ SQL - เครื่องมือซอฟต์แวร์ใช้สำหรับการติดตาม SQL Server "ติดตาม" - เซสชันรวบรวมข้อมูลเกี่ยวกับการทำงานของ SQL Server 2008

วัตถุประสงค์หลัก:

ผู้ดูแลระบบใช้ SQL Profiler เพื่อ:

· การวิเคราะห์การใช้งาน

· การพิจารณาความเหมาะสมของการร้องขอที่ส่งไปยังเซิร์ฟเวอร์

· ระบุคำสั่ง Transact-SQL ที่ทำให้เกิดข้อผิดพลาดเมื่อดำเนินการ

· รวบรวมข้อมูลเกี่ยวกับกิจกรรมของผู้ใช้ในระยะเวลาอันยาวนาน

· ตรวจสอบการทำงานของเซิร์ฟเวอร์แบบเรียลไทม์

คุณสมบัติใหม่:

ก. การทำโปรไฟล์บริการวิเคราะห์

ข. การทำโปรไฟล์เหตุการณ์บริการบูรณาการ

ค. ความสามารถในการบันทึกการอ่านตัวนับจาก Performance Monitor เมื่อบันทึกข้อมูลการดำเนินการคำสั่ง

ง. Profiler ได้เพิ่มเหตุการณ์และแหล่งข้อมูลใหม่มากมายที่สามารถเลือกสำหรับการบันทึกในไฟล์การติดตาม

ฉ. ความสามารถในการจัดกลุ่มเหตุการณ์ในหน้าต่างตัวสร้างโปรไฟล์

การทำงานกับ SQL Server Profiler

1. เรียกใช้ SQL Server Profiler - จากเมนู เริ่มโปรแกรม เครื่องมือประสิทธิภาพ SQL Server 2008 ตัวสร้างโปรไฟล์เซิร์ฟเวอร์ SQL.

2. ในหน้าต่างที่เปิดขึ้นมาในเมนู ไฟล์เลือก ร่องรอยใหม่และเชื่อมต่อกับ เซิร์ฟเวอร์ SQL Server 2008 การดำเนินการที่เราจะตรวจสอบ

3. กำหนดค่าพารามิเตอร์เซสชันในหน้าต่าง คุณสมบัติการติดตามซึ่งจะเปิดขึ้นโดยอัตโนมัติก่อนเริ่มเซสชันการติดตาม (ดูรูปที่ 8.1)

ข้าว. 8.1.การกำหนดค่าตัวเลือกเซสชันการติดตาม

ก. บนแท็บ ทั่วไปเลือกจากรายการ ใช้เทมเพลตเทมเพลตที่เหมาะสมที่สุด เทมเพลตถูกเลือกโดยใช้เมนู ไฟล์ à เทมเพลตใน SQL Server Profiler ในตอนแรก คุณมีเทมเพลตให้เลือกแปดแบบ:

1). มาตรฐาน (ค่าเริ่มต้น)- เทมเพลตเริ่มต้นที่ช่วยให้คุณติดตามขั้นตอนที่เก็บไว้ทั้งหมดและคำสั่ง Transact-SQL ที่เปิดใช้งานเพื่อดำเนินการ

2). SP_นับ- การรวบรวมข้อมูลเกี่ยวกับขั้นตอนการจัดเก็บและฟังก์ชันที่เปิดใช้งานเพื่อดำเนินการ จัดเรียงตามชื่อ

3). TSQL- การรวบรวมข้อมูลเกี่ยวกับคำสั่ง Transact-SQL ทั้งหมดที่เปิดตัวเพื่อดำเนินการบนเซิร์ฟเวอร์ โดยระบุตัวระบุกระบวนการผู้ใช้และเวลาเปิดใช้งาน

4). TSQL_Duration- คล้ายกับเทมเพลตก่อนหน้า แต่แทนที่จะบันทึกข้อมูลเกี่ยวกับเวลาที่เรียกใช้คำสั่ง TSQL เวลาที่ใช้ในการดำเนินการจะถูกบันทึก

5). TSQL_จัดกลุ่ม- นอกเหนือจากข้อมูลเกี่ยวกับโค้ดคำสั่ง Transact-SQL และเวลาที่เปิดตัวแล้ว ข้อมูลเกี่ยวกับชื่อแอปพลิเคชันก็จะถูกบันทึกด้วย บัญชีผู้ใช้ในระบบปฏิบัติการและบัญชีผู้ใช้ที่ใช้ในการเชื่อมต่อ



6). TSQL_เล่นซ้ำ- บันทึกข้อมูลโดยละเอียดที่สุดเกี่ยวกับคำสั่ง Transact-SQL ที่ดำเนินการ

7). TSQL_SP- นอกเหนือจากการบันทึกข้อมูลเกี่ยวกับการเริ่มต้นการเรียกใช้ Stored Procedure (SP:Starting) แล้ว ข้อมูลเกี่ยวกับการดำเนินการแต่ละคำสั่งของ Stored Procedure (SP:StmtStarting) จะถูกบันทึกด้วย

8). การปรับแต่ง- ใช้เพื่อรวบรวมข้อมูลที่จำเป็นสำหรับ Database Tuning Advisor

ข. บนแท็บ ทั่วไปหากคุณต้องการระบุตำแหน่งที่บันทึกข้อมูลการติดตาม:

1) ข้อมูลการติดตามสามารถบันทึกลงในไฟล์ได้ (5 MB โดยค่าเริ่มต้น):

· พารามิเตอร์ เปิดใช้งานการโรลโอเวอร์ไฟล์กำหนดว่าเมื่อไฟล์หนึ่งถูกเติม ไฟล์ถัดไปจะถูกสร้างขึ้นโดยอัตโนมัติหรือไม่ ชื่อของไฟล์ถัดไปจะเหมือนกับชื่อของไฟล์ก่อนหน้า แต่จะเพิ่มตัวเลขในชื่อ (1, 2, 3 ฯลฯ )

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

2). ข้อมูลการติดตามสามารถจัดเก็บไว้ในตาราง SQL Server ตารางที่มีชุดคอลัมน์ที่ต้องการจะถูกสร้างขึ้นโดยอัตโนมัติ

3). การใช้พารามิเตอร์ เปิดใช้งานการติดตามเวลาหยุดคุณสามารถระบุเวลาที่การติดตามจะถูกปิดโดยอัตโนมัติ

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

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

2). โดยใช้ปุ่ม จัดระเบียบคอลัมน์(จัดระเบียบคอลัมน์) กำหนดค่าลำดับของคอลัมน์เพื่อแสดงหรือบันทึกในตัวสร้างโปรไฟล์ด้วยความสามารถในการจัดกลุ่มข้อมูล - ส่วนการจัดกลุ่ม

4. หลังจากตั้งค่าพารามิเตอร์การติดตามทั้งหมดแล้ว ให้คลิกที่ปุ่ม วิ่ง(วิ่ง) (ดูรูปที่ 8.2)

ข้าว. 8.2.ดูข้อมูลระหว่างเซสชันการติดตาม

ส่วนบนของหน้าต่างจะแสดงเหตุการณ์ที่เกิดขึ้นบนเซิร์ฟเวอร์ และส่วนล่างจะแสดง ข้อมูลรายละเอียดสำหรับแต่ละเหตุการณ์ (เช่น รหัสคำสั่ง SQL)

ตัวเลือกที่มีอยู่ในหน้าต่างการติดตาม:

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

2.หากอยู่ในรายการ กลุ่มวางเพียงคอลัมน์เดียว จากนั้นคุณจะมีตัวเลือกในการใช้โหมดการแสดงผล มุมมองแบบรวม(ดูรูปที่ 8.3) โหมดนี้เปิดใช้งานโดยใช้คำสั่ง มุมมองแบบรวมจากเมนูเดียวกัน ดู.

ข้าว. 8.3.โหมดการแสดงผล มุมมองแบบรวม

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

4. คุณสามารถเชื่อมโยงข้อมูลการติดตามกับตัวนับประสิทธิภาพการตรวจสอบระบบ เมื่อต้องการทำสิ่งนี้:

· กำหนดเซสชันการติดตามในระหว่างที่ต้องบันทึกข้อมูลสำหรับคอลัมน์ เวลาเริ่มต้นและ เวลาสิ้นสุด;

· เริ่มต้นเซสชันการติดตามด้วยการบันทึกข้อมูลลงในไฟล์หรือตาราง ในเวลาเดียวกัน ให้รวบรวมโปรโตคอลการอ่านค่ามิเตอร์เป็นไฟล์ การตรวจสอบประสิทธิภาพ;

· เปิด ข้อมูลที่รวบรวมจากไฟล์การติดตามในตัวสร้างโปรไฟล์ จากนั้นใช้คำสั่ง นำเข้าข้อมูลประสิทธิภาพจากเมนู ไฟล์.