การใช้ SQL Profiler (ตัวสร้างโปรไฟล์) การใช้ตัวสร้างโปรไฟล์เซิร์ฟเวอร์ SQL

16/05/2000 อิทซิก เบน-กัน

เช่นเดียวกับการสร้างอาชญากรรมขึ้นใหม่ช่วยในการค้นหาอาชญากร การติดตามฐานข้อมูลจะช่วยระบุปัญหาคอขวดและกำจัดปัญหาเหล่านั้น

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

การเตรียมการเบื้องต้นสำหรับการจำลองเส้นทาง

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

การรันซ้ำใดๆ จำเป็นต้องบันทึกเหตุการณ์ Connect, Disconnect, ExistingConnection รวมถึง RPC:Starting และ SQL:BatchStarting นอกจากนี้ เมื่อเล่นเคอร์เซอร์ API แบ็กเอนด์ (นั่นคือ เคอร์เซอร์เซิร์ฟเวอร์ที่ควบคุมโดยฟังก์ชันเคอร์เซอร์ API) คุณต้องบันทึกเหตุการณ์ CursorExecute, CursorOpen และ CursorPrepare ในการเล่นงบที่เตรียมไว้ เซิร์ฟเวอร์ SQLในทางกลับกัน คุณควรเพิ่มเหตุการณ์ Exec ที่เตรียมไว้ SQL และ เตรียม SQL ด้วย เมื่อทำซ้ำ คุณจะต้องมีคอลัมน์ที่จะมีข้อมูลต่อไปนี้: ชื่อแอปพลิเคชัน ข้อมูลไบนารี, ID การเชื่อมต่อหรือ ID กระบวนการเซิร์ฟเวอร์ (SPID), ID ฐานข้อมูล, คลาสเหตุการณ์, คลาสย่อยของเหตุการณ์, ชื่อโฮสต์, ข้อมูลดิจิทัล, ชื่อเซิร์ฟเวอร์, ชื่อผู้ใช้ SQL, เวลาเริ่มต้นรัน และข้อมูลข้อความ

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

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

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

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

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

พารามิเตอร์ความเร็วในการเล่นซ้ำ อัตราการเล่นซ้ำ สามารถตั้งค่าเป็นค่าใดค่าหนึ่งต่อไปนี้:

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

องค์กรของการเล่นเส้นทาง

สมมติว่าคุณต้องการสร้างการติดตามการดำเนินการของคำสั่ง SQL ฝั่งเซิร์ฟเวอร์ที่เตรียมไว้ ซึ่งเป็นคำสั่ง Transact-SQL (T-SQL) ที่ผู้ใช้ส่งไปยังเซิร์ฟเวอร์ผ่าน ADO, OLE DB หรือ ODBC SQL Server 7.0 ดำเนินการคำสั่ง SQL ที่จัดเตรียมฝั่งเซิร์ฟเวอร์โดยใช้ขั้นตอนที่เก็บไว้หลอก sp_prepare และ sp_execute ซึ่งถูกเรียกโดยแอปพลิเคชันไคลเอนต์

การเรียกsp_prepareทำให้ SQL Server เตรียมคำสั่ง T_SQL สำหรับการดำเนินการ โดยการคอมไพล์และแคชแผนการดำเนินการ เมื่อมีการเรียกsp_execute SQL Server จะดำเนินการแผนการแคชไว้ก่อนหน้านี้ ซึ่งอาจดำเนินการดังกล่าวซ้ำๆ การเรียกกระบวนงานที่เก็บไว้แต่ละครั้งจะสร้างเหตุการณ์ RPC:BatchStarting, เตรียม SQL และ Exec ที่เตรียมไว้ ด้วยเหตุนี้จึงต้องรวมเหตุการณ์เหล่านี้ไว้ในคำจำกัดความของเส้นทาง

SQL Profiler มีข้อกำหนดการติดตามตัวอย่างหลายตัวอย่างที่คุณสามารถใช้เป็นเทมเพลตได้ รวมถึงตัวอย่างหมายเลข 6 “T-SQL for Replay” ที่เกี่ยวข้องกับการเรียกใช้การติดตามอีกครั้ง ตัวอย่างนี้มีประโยชน์สำหรับการระบุเอาต์พุตการติดตามที่สร้างขึ้นระหว่างการเล่นซ้ำ หากต้องการเปิดเอาต์พุตการติดตามที่บันทึกไว้สำหรับการเล่น ให้เลือก เปิด จากเมนูไฟล์ และเลือกไฟล์ ตาราง หรือสคริปต์ SQL เพื่อจัดเก็บข้อมูลที่รวบรวมระหว่างการติดตาม คุณสามารถควบคุมการเล่นโดยใช้ตัวเลือกที่แสดงในตารางที่ 1 โดยสามารถแสดงด้วยรายการเมนูเล่นซ้ำหรือด้วยปุ่มบนแถบเครื่องมือ

การใช้ขั้นตอนการจัดเก็บเพิ่มเติม

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

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

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

ขั้นตอนการจัดเก็บเพื่อดำเนินการติดตาม

มาดูขั้นตอนการจัดเก็บทั้งสองนี้เพื่อดูว่าการติดตามเริ่มต้นและหยุดอย่างไร ขั้นตอนการจัดเก็บที่เริ่มต้นการติดตามมีพารามิเตอร์อินพุตทางเลือกสี่ตัว สองรายการแรก @spid_filter และ @dbid_filter ช่วยให้คุณสามารถจำกัดข้อมูลที่รวบรวมระหว่างการติดตามเฉพาะข้อมูลที่เกี่ยวข้องกับกระบวนการเซิร์ฟเวอร์เฉพาะ (ระบุโดย SPID) และฐานข้อมูลที่กำหนด หากไม่ได้ระบุพารามิเตอร์เหล่านี้ การติดตามจะรวบรวมข้อมูลจากกระบวนการและฐานข้อมูลทั้งหมด พารามิเตอร์ @email_address ช่วยให้คุณสามารถกำหนดที่อยู่ได้ อีเมลโดยจะมีการส่งข้อมูลโดยละเอียดเกี่ยวกับความคืบหน้าของการติดตาม หากไม่ได้ระบุพารามิเตอร์นี้ sp_start_mytrace จะแสดงเฉพาะข้อมูลบนหน้าจอเท่านั้น หากมีการระบุ แต่ระบุที่อยู่ไม่ถูกต้อง ขั้นตอนที่เก็บไว้จะสร้างข้อความแสดงข้อผิดพลาดและออก พารามิเตอร์สุดท้าย @filename มีวัตถุประสงค์เพื่อระบุชื่อของไฟล์ที่จะส่งข้อมูลที่รวบรวมระหว่างการติดตามจะถูกส่งไป ในกรณีที่ไม่ได้กำหนดพารามิเตอร์นี้ ข้อมูลดีฟอลต์จะถูกวางไว้ในไฟล์ c:\mytraceN.trc โดยที่ N คือหมายเลขตัวอธิบายคิว แบบแผนนี้ ซึ่งกำหนดกฎสำหรับการตั้งชื่อไฟล์ข้อมูลการติดตาม อนุญาตให้มีการติดตามหลายรายการพร้อมกัน โดยไม่ต้องอนุญาตให้หนึ่งในนั้นล็อกไฟล์เพื่อบันทึกผลลัพธ์ด้วยตนเอง

หากต้องการทดสอบการดำเนินการทริกเกอร์ ให้เปลี่ยนคุณสมบัติไฟล์:

แก้ไขฐานข้อมูล testdb แก้ไขไฟล์ (NAME = `testdb_dat`, MAXSIZE = 30MB)

คุณจะได้รับข้อความแจ้งว่าคุณสมบัติไฟล์มีการเปลี่ยนแปลง:

คุณสมบัติไฟล์มีการเปลี่ยนแปลง:
คำสั่ง: ALTER DATABASE testdb MODIFY FILE (NAME = `testdb_dat`,
ขนาดสูงสุด = 30MB)
ชื่อผู้ใช้ NT: แกนดัล์ฟ
ชื่อแอปพลิเคชัน: ตัววิเคราะห์คำถาม MS SQL
ชื่อผู้ใช้ SQL: NA
เวลา: 22-11-2543 14:15:28 น

เป็นเรื่องยากมากเสมอที่จะทราบว่าเหตุการณ์ใดที่นำไปสู่การหยุดชะงักที่จะเกิดขึ้น อย่างไรก็ตาม SQL Profiler มีกิจกรรมพิเศษที่ทำให้ "การสืบสวน" ง่ายขึ้นมาก ตัวอย่างเช่น คุณสามารถติดตามการเกิดขึ้นของเหตุการณ์ Lock:Deadlock การเกิดขึ้นของเหตุการณ์นี้พูดได้

ว่าเกิดเหตุการณ์ชะงักงันขึ้น ซึ่งจะแจ้งให้ผู้ใช้ทราบถึง ID กระบวนการเซิร์ฟเวอร์ (SPID), ID ธุรกรรมที่ถูกบล็อก, เวลาที่บล็อกเกิดขึ้น, ชื่อแอปพลิเคชัน และ ID ผู้ใช้ เหตุการณ์ Lock: Deadlock Chain ซึ่งสร้างขึ้นทุกครั้งที่เกิดการบล็อกนั้นสะดวกอย่างยิ่ง: ช่วยให้คุณสามารถค้นหาตัวระบุกระบวนการ (SPID) และธุรกรรมได้

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

หากต้องการสร้างสถานการณ์การหยุดชะงัก ให้สร้างตาราง 2 ตาราง t1 และ t2 ซึ่งแต่ละตารางต้องมีคอลัมน์จำนวนเต็มเพียงคอลัมน์เดียวเท่านั้น ป้อนหนึ่งแถวลงในแต่ละตารางที่มีค่า 1 กำหนดการติดตามที่จะบันทึกชุดเหตุการณ์ต่อไปนี้: Lock:Deadlock, Lock: Deadlock Chain และเหตุการณ์เริ่มต้นและสิ้นสุดที่สอดคล้องกันของการดำเนินการของตัวดำเนินการ (RPC, SP, SQL) ควรเลือกทางเลือกขึ้นอยู่กับแหล่งที่มาของการปิดกั้นที่ต้องการ ในตัวอย่างของเรา เราจะต้องมีเพียงเหตุการณ์ SQL: StmtStarting และ SQL:StmtCompleted

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

เริ่มต้นการทำธุรกรรมอัปเดต t1 SET col1 = 1

บนการเชื่อมต่อ 2 ให้เริ่มธุรกรรมต่อไปนี้:

เริ่มต้นการทำธุรกรรม
อัปเดต t2 ตั้งค่า col1 = 1
เลือก * จาก t1
กระทำธุรกรรม

สุดท้าย ในการเชื่อมต่อ 1 ให้รันคำสั่ง:

เลือก * จาก t2
กระทำธุรกรรม

หยุดการติดตามและเปิดไฟล์ที่มีผลลัพธ์การติดตาม ค้นหาเหตุการณ์ Lock:Deadlock Chain และจดบันทึกหมายเลขธุรกรรมที่เกี่ยวข้อง จัดกลุ่มเอาต์พุตตามรหัสธุรกรรมและขยายธุรกรรมที่เกี่ยวข้อง ผลลัพธ์จะมีลักษณะคล้ายกับที่แสดงในหน้าจอที่ 1

ตัวจัดการองค์กรของเซิร์ฟเวอร์ SQL มีตัวช่วยสร้างที่สามารถช่วยคุณตั้งค่าการติดตาม รวมถึงเครื่องมือที่ใช้เพื่อค้นหาสาเหตุของการหยุดชะงัก หากต้องการใช้ Create Trace Wizard เพื่อกำหนดการสืบค้นกลับ ให้เข้าสู่ระบบ Enterprise Manager เลือก Wizards จากเมนู Tools จากนั้นเปิดหมวดหมู่ Management และเลือก Create Trace Wizard

หมายเหตุสุดท้าย

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

อิทซิก เบน-กัน [ป้องกันอีเมล]ถือใบรับรอง MCDBA, MCSE+I, MCSD, MCT และ SQL Server MVP เขาเป็นอาจารย์อาวุโสสำหรับหลักสูตร SQL Server ที่ Hi-Tech College ในอิสราเอล และประธานกลุ่มผู้ใช้ SQL Server ของอิสราเอล

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

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

บนแท็บ ทั่วไป คุณต้องระบุชื่อของการติดตาม ระบุตำแหน่งที่จะบันทึกข้อมูลการติดตามที่บันทึกไว้ - ลงในไฟล์และ/หรือตารางฐานข้อมูล

สิ่งที่น่าสนใจอย่างยิ่งคือแท็บ "การเลือกกิจกรรม":

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

รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:

ตามค่าเริ่มต้น การติดตามจะรันกับเหตุการณ์ที่ระบุทั้งหมดในฐานข้อมูลทั้งหมด ในการใช้การเลือกกับข้อมูลที่ได้รับคุณต้องคลิกปุ่ม "ตัวกรองคอลัมน์ ... ":

ตัวอย่างเช่น ตั้งค่าการเลือกตามตัวระบุ ฐานข้อมูล(คุณสามารถค้นหา ID ฐานข้อมูลได้โดยใช้แบบสอบถาม SELECT DB_ID(N'DatabaseName'))

เรียกใช้การติดตามใน Profiler สำหรับ 1C

หลังจากทำการตั้งค่าทั้งหมดแล้ว สิ่งที่เหลืออยู่คือเริ่มการติดตาม โดยคลิก "เรียกใช้" นับจากนี้เป็นต้นไป การดำเนินการทั้งหมดที่ระบุในตัวกรองจะรวมอยู่ในการติดตาม:

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

เมื่อได้รับการติดตามแล้ว จะต้องวิเคราะห์

การวิเคราะห์ข้อมูลจาก Profiler

สำหรับการวิเคราะห์ สามารถบันทึกการติดตามผลลัพธ์ลงในไฟล์หรือตารางได้ เราจะบันทึกลงในตารางฐานข้อมูล:

เมื่อพัฒนาโมดูลแอปพลิเคชันของระบบ Lexema.ru จำเป็นต้องวิเคราะห์การสืบค้นไปยังฐานข้อมูลเป็นระยะ ๆ ในระหว่างการทำงานของแบบฟอร์มหน้าจอ การสืบค้น รายงาน ขั้นตอนการจัดเก็บ และวัตถุอื่น ๆ เพื่อวินิจฉัยปัญหา เครื่องมือสร้างโปรไฟล์แบบสอบถาม SQL ได้รับการออกแบบมาเพื่อแก้ไขปัญหาดังกล่าว พวกเขาอนุญาต:

  • ติดตามเหตุการณ์ ประเภทต่างๆบนเซิร์ฟเวอร์ฐานข้อมูล (ดำเนินการสอบถาม ขั้นตอนการจัดเก็บ ฯลฯ)
  • กรองเหตุการณ์ตามเกณฑ์ต่างๆ (ชื่อฐานข้อมูล การเข้าสู่ระบบของผู้ใช้ ฯลฯ)
  • บันทึกลำดับของการดำเนินการในรูปแบบของการติดตามเหตุการณ์ จากนั้น จะสามารถวิเคราะห์การติดตามและบันทึกลงในไฟล์หรือฐานข้อมูลได้
  • วิเคราะห์ประสิทธิภาพ (ความเร็วในการดำเนินการ) ของการสืบค้นเพื่อค้นหาและกำจัดปัญหาคอขวดของระบบ
  • ฯลฯ

บทความนี้กล่าวถึงเครื่องมือสองอย่าง:

  • Lexema SQL Profiler ที่สร้างไว้ใน Application Modeler
  • MS SQL Server Profiler ที่มาพร้อมกับ MS SQL Server

Lexema SQL Profiler

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

หากต้องการใช้ Lexema SQL Profiler ให้เรียกใช้ Application Modeler คลิกที่ปุ่มที่มีรูปถังที่มุมซ้ายบนของหน้าต่าง:

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

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

ตารางด้านบนประกอบด้วยรายการเหตุการณ์ (แบบสอบถาม SQL) ฟิลด์ด้านล่างประกอบด้วยเนื้อหา (โค้ด SQL)

ฟิลด์ตาราง:

  • เหตุการณ์คลาส
  • ข้อความข้อมูล
  • ระยะเวลา
  • เวลาเริ่มต้น
  • เวลาสิ้นสุด
  • ชื่อแอปพลิเคชัน
  • อ่าน
  • เขียน
  • ธุรกรรม

ตัวอย่างเช่นจากการติดตามเหตุการณ์เมื่อเปิดรายการโมเดลสามารถสรุปได้ดังต่อไปนี้: ร้องขอข้อมูลจากสามตาราง (L8_Model, L8_ModelProperty และ L8_Namespace); แบบสอบถามที่ยาวที่สุดถูกสร้างขึ้นในตาราง L8_ModelProperty (242 ms)

ตัวสร้างโปรไฟล์เซิร์ฟเวอร์ MS SQL

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

  • การตรวจสอบประสิทธิภาพของอินสแตนซ์ SQL Server Database Engine
  • การดีบักคำสั่ง Transact-SQL และขั้นตอนการจัดเก็บ
  • การวิเคราะห์ประสิทธิภาพโดยการระบุข้อความค้นหาที่ทำงานช้า
  • ทำการทดสอบความเครียดและการควบคุมคุณภาพโดยการเล่นซ้ำร่องรอย
  • เล่นซ้ำการติดตามของผู้ใช้ตั้งแต่หนึ่งคนขึ้นไป
  • การตรวจสอบคำสั่ง Transact-SQL และขั้นตอนการจัดเก็บในระหว่างการพัฒนาโครงการในลักษณะทีละขั้นตอนเพื่อให้แน่ใจว่ามีการเรียกใช้โค้ดที่ถูกต้อง
  • แก้ไขปัญหาใน SQL Server โดยการสกัดกั้นเหตุการณ์ในระบบการผลิต (เวอร์ชันที่ใช้งานจริง) และทำซ้ำในเวอร์ชันดีบัก (เวอร์ชันทดสอบ) นี้เป็นอย่างมาก โอกาสที่เป็นประโยชน์เนื่องจากช่วยให้คุณใช้ระบบที่ใช้งานจริงต่อไปได้ในขณะทดสอบหรือแก้ไขจุดบกพร่อง
  • การตรวจสอบและติดตามกิจกรรมที่เกิดขึ้นในอินสแตนซ์ของ SQL Server ความสามารถนี้ช่วยให้ผู้ดูแลระบบความปลอดภัยสามารถดูเหตุการณ์การตรวจสอบใดๆ ได้ เช่น สำเร็จ และ ความพยายามที่ไม่สำเร็จเข้าสู่ระบบและสิทธิ์การเข้าถึงคำแนะนำและวัตถุ
  • การบันทึกผลลัพธ์การติดตามในรูปแบบ XML ซึ่งมีโครงสร้างลำดับชั้นที่เป็นมาตรฐานสำหรับการจัดเก็บผลลัพธ์การติดตาม ซึ่งช่วยให้คุณสามารถเปลี่ยนแปลงการติดตามที่มีอยู่หรือสร้างด้วยตนเองเพื่อเล่นในภายหลัง
  • การวิเคราะห์ทางสถิติของผลลัพธ์การติดตาม ทำให้สามารถจัดกลุ่มและวิเคราะห์เหตุการณ์ประเภทเดียวกันได้ ผลลัพธ์จะมีการนับตามการจัดกลุ่มตามหนึ่งคอลัมน์
  • การอนุญาตให้ผู้ที่ไม่ใช่ผู้ดูแลระบบสร้างการติดตาม
  • การตั้งค่าเทมเพลตการติดตาม ซึ่งสามารถนำไปใช้กับการติดตามครั้งต่อไปได้

การเริ่มต้นและการเชื่อมต่อกับเซิร์ฟเวอร์

คุณสามารถเปิด MS SQL Server Profiler ได้จากเมนู Windows OS (เมนู Start) หรือจากเมนูโปรแกรม MS SQL Server Management Studio (เครื่องมือ - "แอปพลิเคชัน SQL Server Profiler") หลังจากเริ่มต้นคุณจะต้องเข้าสู่เซิร์ฟเวอร์ - ป้อนที่อยู่เซิร์ฟเวอร์ชื่อ บัญชีและรหัสผ่าน:

การกำหนดค่าตัวเลือกการติดตาม

จากนั้น ก่อนที่จะเริ่มการติดตาม คุณต้องตั้งค่าคุณสมบัติ:

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

การเลือกประเภทเหตุการณ์และคุณลักษณะ

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

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

หากดำเนินการติดตามเพื่อติดตามคำขอที่ทำโดยแอปพลิเคชัน Lexema.ru การทำเครื่องหมายเหตุการณ์ 3 ประเภทใน 2 กลุ่มก็เพียงพอแล้ว:

  • ขั้นตอนการจัดเก็บ
    • RPC: เสร็จสมบูรณ์ - เกิดขึ้นเมื่อการเรียกขั้นตอนระยะไกล (RPC) เสร็จสมบูรณ์
    • SP:Completed - เกิดขึ้นเมื่อขั้นตอนการจัดเก็บเสร็จสมบูรณ์
  • TSQL - ติดตามการดำเนินการของคำสั่ง TransactSQL ที่ไคลเอนต์ส่งไปยังเซิร์ฟเวอร์ฐานข้อมูล
    • SQL:BatchCompleted - เกิดขึ้นเมื่อคำสั่ง TransactSQL ดำเนินการเสร็จสิ้น

บันทึก: ช่องทำเครื่องหมายในคอลัมน์เหตุการณ์สามารถมีได้ 3 สถานะ:

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

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

ประเภทและประเภทของกิจกรรมที่เป็นประโยชน์อื่นๆ ได้แก่:

  • การตรวจสอบความปลอดภัย

การตั้งค่าตัวเลือกการกรอง

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

เมื่อติดตามเหตุการณ์ที่เกิดขึ้นเมื่อผู้ใช้รายใดรายหนึ่งใช้เว็บอินเตอร์เฟสของ Lexema.ru ขอแนะนำให้ตั้งค่าตัวกรอง "ApplicationName" คล้ายกับ<логин_пользователя>+&1 เช่น "PetrovAN&1" โดยที่ PetrovAN เป็นผู้เข้าสู่ระบบของผู้ใช้:

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

การติดตามกิจกรรม

สมมติว่าหลังจากตั้งค่าการตั้งค่าที่อธิบายไว้ข้างต้นและเริ่มการติดตาม ผู้ใช้ที่เข้าสู่ระบบ " ไอรัต"เข้าสู่ระบบและเปิดการลงทะเบียนหมวดหมู่รายได้และค่าใช้จ่ายของโมดูล "การบัญชีที่บ้าน" จากนั้นเปิดหนึ่งในเอกสาร (เป็นตัวอย่าง):

ด้วยเหตุนี้ การติดตามตัวสร้างโปรไฟล์เซิร์ฟเวอร์ SQL จะแสดงรายการเหตุการณ์:

เมื่อวิเคราะห์รายการเหตุการณ์การติดตาม คุณจะเห็นว่าหนึ่งในเคียวรีที่ยาวที่สุดคือ:

exec sp_executesql N "เลือก AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, AS, ASจาก ", N @PrimaryKeyBoundary ใหญ่ @TopCount ใหญ่int", @PrimaryKeyBoundary = NULL , @TopCount = NULL

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

คุณยังสามารถดูเหตุการณ์ประเภท SQL:BatchCompleted ในรายการได้:

นี่คือผลลัพธ์ของการดำเนินการตามคำขอ (QuerySource) Lexema.ru

หากต้องการค้นหาข้อความสำหรับข้อความค้นหาที่ติดตามในการติดตาม คุณต้องคลิกปุ่ม "ค้นหาบรรทัด" (พร้อมไอคอนกล้องส่องทางไกล) บนแถบเครื่องมือหรือกดคีย์ผสม Ctrl+F:

จากนั้นคุณจะต้องป้อนข้อความค้นหาและเลือกคอลัมน์ที่ต้องการค้นหา (ข้อความค้นหามีอยู่ในคอลัมน์ TextData) หลังจากคลิกปุ่ม "ถัดไป" เคอร์เซอร์จะอยู่ที่บรรทัดของเหตุการณ์ที่มีข้อความที่ค้นหา

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

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

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

เมื่อต้องการเรียกใช้ยูทิลิตี้ Profiler และเริ่มการติดตาม ให้ทำตามขั้นตอนเหล่านี้

  1. คลิกปุ่มเริ่ม เลือกโปรแกรม เลือก Microsoft SQL Server จากนั้นเลือก Profiler เมื่อคุณเปิดหน้าต่าง Profiler ในตอนแรก หน้าต่างนั้นจะว่างเปล่า จะไม่มีการเปิดพาเนลและจะไม่มีการดำเนินการโปรไฟล์ใน SQL Server
  2. หากต้องการเริ่มสร้างโปรไฟล์ คุณต้องเลือกเทมเพลตการติดตามที่มีอยู่เพื่อรันหรือสร้าง เทมเพลตใหม่ติดตามเพื่อดำเนินการ (กระบวนการเริ่มต้นอธิบายไว้ในขั้นตอนที่ 4) SQL Server 2000 Profiler มีเทมเพลตการติดตามที่หลากหลายให้เลือก การใช้เทมเพลตการติดตามเหล่านี้ช่วยให้คุณประหยัดเวลาได้มาก เนื่องจากคุณไม่จำเป็นต้องสร้างการติดตามตั้งแต่ต้น หากต้องการดูรายการเทมเพลตการติดตาม คลิกเมนูไฟล์ ชี้ไปที่เปิด และเลือกเทมเพลตการติดตามเพื่อแสดงกล่องโต้ตอบเปิด (รูปที่ 35.16)


    ข้าว. 35.16.

    เทมเพลตการติดตามต่อไปนี้พร้อมใช้งานกับ SQL Server
    • SQLServerProfilerSP_Counts.tdf- นับจำนวนโพรซีเดอร์ที่เก็บไว้ที่ทำงานอยู่ ผลลัพธ์จะถูกจัดกลุ่มตามชื่อกระบวนงานที่เก็บไว้ และมีจำนวนการดำเนินการของขั้นตอนที่เกี่ยวข้อง
    • SQLServerProfilerStandard.tdf- รวบรวม ข้อมูลทั่วไปเกี่ยวกับการเชื่อมต่อ ดำเนินการขั้นตอนการจัดเก็บและแพ็คเกจ SQL ตามลำดับที่ดำเนินการ
    • SQLServerProfilerTSQL.tdf- รวบรวมข้อมูลเกี่ยวกับคำสั่ง T-SQL ทั้งหมดตามลำดับที่ได้รับจากผู้ใช้ไปยัง SQL Server การติดตามนี้ประกอบด้วยคำสั่ง T-SQL และเวลาที่ถูกดำเนินการ
    • SQLServerProfilerTSQL_Duration.tdf- แสดงรายการคำสั่ง T-SQL ที่ถูกรัน รวมถึงเวลา (เป็นมิลลิวินาที) ที่ใช้ในการรันคำสั่งเหล่านั้น
    • SQLServerProfilerTSQL_Grouped.tdf- รวบรวมข้อมูลคล้ายกับสิ่งที่ SQLServerProfilerTSQL รวบรวม แต่จัดกลุ่มคำสั่งตามผู้ใช้ที่เรียกใช้คำสั่ง
    • SQLServerProfilerTSQL_Replay.tdf- จัดเตรียมให้ ข้อมูลรายละเอียดเกี่ยวกับการรันคำสั่ง T-SQL การติดตามนี้มีข้อมูลที่สามารถใช้เพื่อสร้างคำสั่ง T-SQL ในตัววิเคราะห์แบบสอบถามได้
    • SQLServerProfilerTSQL_SPs.tdfพิมพ์ขั้นตอนการจัดเก็บที่ระบุรวมทั้ง คำสั่ง T-SQLภายในขั้นตอนเหล่านี้ ผลลัพธ์จะแสดงตามลำดับการดำเนินการ
    • SQLServerProfilerTuning.tdf- รวบรวมขั้นตอนการจัดเก็บและข้อมูลการดำเนินการแพ็คเกจ SQL
    เทมเพลตการติดตามเหล่านี้มีประโยชน์มาก ตัวอย่างเช่น รูปแบบการติดตาม SQLServerProfilerTSQL_Duration สามารถช่วยคุณระบุคำสั่ง T-SQL ที่ใช้เวลาดำเนินการนานที่สุด ข้อมูลนี้สามารถใช้เป็นจุดเริ่มต้นสำหรับ การเพิ่มประสิทธิภาพแบบสอบถาม- ผู้ปฏิบัติงานอาจใช้เวลานานเพราะเขาทำงานหนักมากหรืออาจเป็นเพราะเขาไม่มีประสิทธิภาพ ดังที่คุณจะเห็นในขั้นตอนถัดไป สำหรับการติดตามใดๆ คุณต้องใช้เทมเพลตที่กำหนดไว้ล่วงหน้า
  3. เมื่อต้องการเริ่มต้นการติดตาม คลิก ไฟล์ เลือก ใหม่ จากนั้นเลือก ติดตาม กล่องโต้ตอบเชื่อมต่อกับ SQL Server จะปรากฏขึ้น (รูปที่ 35.17) ในกล่องโต้ตอบนี้ เลือกระบบ SQL Server เพื่อติดตาม จากนั้นคลิก ตกลง


    ข้าว. 35.17.
  4. หน้าต่างคุณสมบัติการติดตามจะปรากฏขึ้น (รูปที่ 35.18) ในแท็บทั่วไป คุณสามารถป้อนชื่อสำหรับการติดตาม (ฟิลด์ชื่อการติดตาม) และเลือกเทมเพลตการติดตามเพื่อใช้เป็นจุดเริ่มต้น สำหรับ ตัวอย่างนี้เลือกเทมเพลต SQLServerProfilerTSQLDuration ที่ด้านล่างของแท็บ คุณสามารถระบุตำแหน่งที่คุณต้องการบันทึกการติดตาม - ในไฟล์ (บันทึกในไฟล์) และ/หรือในตาราง SQL Server (บันทึกในตาราง) หากไม่ได้เลือกช่องทำเครื่องหมายเหล่านี้ ผลลัพธ์การติดตามจะแสดงบนหน้าจอเท่านั้น นอกจากนี้ คุณยังสามารถตั้งเวลาสิ้นสุดสำหรับการติดตามได้ (ช่องทำเครื่องหมายและฟิลด์ เปิดใช้งานเวลาหยุดการติดตาม) สิ่งนี้มีประโยชน์มากสำหรับการติดตามในระยะยาว


    ข้าว. 35.18.
  5. จากนั้นคลิกที่แท็บเหตุการณ์ (รูปที่ 35.19)


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

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

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

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

ShowplanStatisticsโปรไฟล์– แผนข้อความตอบสนองคำขอ

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 ถามพวกเขาในความคิดเห็น ฉันยินดีที่จะตอบ