ฉันจะวัดประสิทธิภาพของแบบสอบถามได้ดีที่สุดได้อย่างไร


19

ฉันมี 2 โพรซีเดอร์ที่เก็บซึ่งโพรซีเดอร์ที่เก็บที่สองคือการปรับปรุงของโพรซีเดอร์แรก

ฉันพยายามวัดว่าการปรับปรุงนั้นดีเพียงใด

1 / การวัดclock timeไม่ได้เป็นตัวเลือกเนื่องจากฉันได้รับเวลาในการดำเนินการที่แตกต่างกัน ยิ่งแย่ลงบางครั้ง (ไม่ค่อยเกิดขึ้น แต่เกิดขึ้น) เวลาดำเนินการของโพรซีเดอร์ที่เก็บไว้สองครั้งนั้นใหญ่กว่าเวลาดำเนินการของโพรซีเดอร์แรก (ฉันเดาว่าเนื่องจากเวิร์กโหลดเซิร์ฟเวอร์ในขณะนั้น)

2 / Include client statisticsยังให้ผลลัพธ์ที่แตกต่าง

3 / DBCC DROPCLEANBUFFERS, DBCC FREEPROCCACHEเป็นสิ่งที่ดี แต่เป็นเรื่องเดียวกัน ...

4 / SET STATISTICS IO ONอาจเป็นตัวเลือก แต่ฉันจะได้คะแนนโดยรวมได้อย่างไรเนื่องจากฉันมีตารางจำนวนมากที่เกี่ยวข้องกับขั้นตอนการจัดเก็บของฉัน

5 / Include actual execution planอาจเป็นตัวเลือกด้วย ฉันได้รับestimated subtreecost0.3253 สำหรับขั้นตอนการจัดเก็บครั้งแรกและ 0.3079 สำหรับขั้นตอนที่สอง ฉันสามารถพูดได้ว่าขั้นตอนการเก็บที่สองเร็วขึ้น 6% (= 0.3253 / 0.3079)

6 / การใช้ฟิลด์ "อ่าน" จาก SQL Server Profiler?

ดังนั้นฉันจะบอกได้อย่างไรว่าขั้นตอนการจัดเก็บที่สองคือ x% เร็วกว่าขั้นตอนแรกไม่ว่าเงื่อนไขการดำเนินการ (ภาระงานของเซิร์ฟเวอร์เซิร์ฟเวอร์ที่ดำเนินการขั้นตอนการจัดเก็บเหล่านี้ ฯลฯ )?

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

คำตอบ:


17

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

ตัวอย่างเช่นคุณสามารถดำเนินการแต่ละกระบวนงานที่เก็บไว้ 100 ครั้งแล้วใช้สถิติเพื่อสำรองการปรับปรุงของคุณ "การประหารชีวิตกว่า 100 ครั้งการปรับปรุงของฉันบันทึกทั้งหมด 30 วินาทีและ proc ที่เก็บไว้จะอ่านน้อยลงต่อการประหารชีวิต 1,500 ครั้ง" ฉันคิดว่าคุณได้รับความคิด

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

เอกสารประกอบ SQLQueryStress: http://www.datamanipulation.net/sqlquerystress/documentation/documentation.asp

SQLQueryStress


6

4 / คุณสามารถไปที่http://statisticsioparser.com/statisticsioparser/และวางสถิติของคุณเพื่อดูคะแนนโดยรวม


ตรรกะอ่าน: 3101 กับ 2943 อ่านล่วงหน้าอ่าน: 0 vs 8 จำนวนการสแกน: 637 โดยรวม การอ่านทางกายภาพ: 0 โดยรวม LOB ตรรกะอ่าน: 156 โดยรวม
Mihai Bejenariu

3

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

http://www.evanmiller.org/ab-testing/t-test.html

เพื่อดูว่าพวกเขาแตกต่างกันจริง ๆ

ความแตกต่าง 6% เสียงไม่มากเมื่อมันมาถึงการปรับปรุงขั้นตอนการจัดเก็บ ฉันคาดหวังว่าคำสั่งสองขนาดจากเพื่อนร่วมงานของฉันและฉันแกล้งทำเป็นผิดหวังถ้าเขาได้รับเพียงลำดับเดียว ...

เขาไม่ต้องใช้โฮมเพจ EvanMiller เพื่อพิสูจน์ว่าโซลูชันของเขาทำงานได้เร็วขึ้น

ฉันจะติดตั้ง SQLSentrys (แก้ไข :) Plan Explorer จากhttp://www.sqlsentry.com/เนื่องจากเป็นเครื่องมือที่ปรับปรุงให้ดีขึ้นมากสำหรับการเปรียบเทียบแผนการดำเนินการ

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