ประสิทธิภาพการสืบค้นต่ำ


10

เรามีกระบวนการขนาดใหญ่ (10,000+ บรรทัด) ซึ่งโดยทั่วไปแล้วจะทำงานใน 0.5-6.0 วินาทีขึ้นอยู่กับปริมาณข้อมูลที่ต้องใช้งาน ในช่วงเดือนที่ผ่านมาหรือประมาณ 30 กว่าวินาทีหลังจากเราอัปเดตสถิติด้วย FULLSCAN เมื่อมันช้าลง sp_recompile "แก้ไข" ปัญหาจนกว่างานสถิติรายค่ำคืนจะทำงานอีกครั้ง

ด้วยการเปรียบเทียบแผนการดำเนินการที่ช้าและเร็วฉันได้ จำกัด ให้แคบลงเป็นตาราง / ดัชนีเฉพาะ เมื่อมันทำงานช้ามันกำลังประมาณ ~ 300 แถวจะถูกส่งคืนจากดัชนีเฉพาะเมื่อมันทำงานเร็วมันจะประมาณ 1 แถว เมื่อรันช้ามันจะใช้ Table Spool หลังจากทำการค้นหาบนดัชนีเมื่อมันรันเร็วมันจะไม่ทำ Spool Table

ใช้ DBSS SHOW_STATISTICS ฉันทำกราฟฮิสโตแกรมดัชนีใน excel ปกติแล้วฉันจะคาดหวังว่ากราฟจะเป็น "ภูเขากลิ้ง" มากกว่า แต่ดูเหมือนว่าภูเขาซึ่งเป็นจุดที่สูงที่สุดคือ 2x-3x สูงกว่าค่าอื่น ๆ ส่วนใหญ่บนกราฟ

ดัชนีฮิสโตแกรม

หากฉันอัปเดตสถิติโดยไม่มี FULLSCAN มันจะดูเป็นปกติมากกว่า ถ้าฉันเรียกใช้ด้วย FULLSCAN อีกครั้งดูเหมือนว่าฉันอธิบายไว้ข้างต้น

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

proc ใช้ในพารามิเตอร์ที่มีค่าเป็นตารางสามารถดมกลิ่นพารามิเตอร์เกิดขึ้นในพารามิเตอร์ที่มีค่าของตารางได้หรือไม่

แก้ไข: proc ใช้เวลา 12 พารามิเตอร์อื่น ๆ ซึ่งบางส่วนเป็นตัวเลือกที่สองซึ่งเป็นวันที่เริ่มต้นและสิ้นสุด

ฮิสโทแกรมนั้นแปลกหรือฉันกำลังเห่าต้นไม้ผิด?

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

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

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


เป็นเพียงพารามิเตอร์ไปยังขั้นตอน TVP หรือมีพารามิเตอร์อื่น ๆ มากเกินไป?
Martin Smith

1
หากคุณดู XML ช้าและเร็วแผนความแตกต่างสามารถอธิบายได้โดยแตกต่างกันParameterCompiledValueสำหรับพารามิเตอร์อื่น ๆ เหล่านี้หรือไม่
Martin Smith

1
ช่วงวันที่ที่คอมไพล์ด้วยนั้นแคบลงอย่างมาก (5 วันแทนที่จะเป็น 31) สำหรับการโทรส่วนใหญ่ proc นี้จะวิ่งเป็นเวลาหนึ่งเดือน ฉันสามารถลองเพิ่มคำใบ้คอมไพล์ใหม่ในคำสั่งเฉพาะนั้นได้
Mark Wilkinson

1
นั่นดูเหมือนจะเป็นการกระจายตัวแบบแปลก ๆ สำหรับคอลัมน์ข้อมูลประจำตัว ฉันเพิ่งอ่านบทความนี้และสงสัยว่าคุณจะสามารถอธิบายรายละเอียดเกี่ยวกับสิ่งที่คุณเห็นโดยประมาณกับตามจริงในสองแผนนี้หรือไม่ > blogs.technet.com/b/mspfe/archive/2013/04/18/…
Richard Schweiger

1
เพื่อให้ชัดเจน: กราฟของอะไรกันแน่? RANGE_HI_KEYบนแกน x น่าจะเป็นไปได้ แต่บนแกน y คืออะไร? EQ_ROWS? RANGE_ROWS? ผลรวมของพวกนั้น?
พอลไวท์ 9

คำตอบ:


3

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

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