การค้นหาของฉันในหัวข้อนำฉันมาที่นี่ดังนั้นฉันแค่อยากจะแบ่งปันประสบการณ์ล่าสุดของฉันในหัวข้อ
ฉันใช้ SQL 2014 ดังนั้นฉันจึงคิดว่าฉันจะปลอดภัยจากการต้องดูแลประมาณ 4199 นิดหน่อย ... แต่มันก็ไม่จริง ...
วิธีการวินิจฉัยหากคุณต้องการ 4199
หากข้อความค้นหาของคุณทำงานไม่ดีโดยเฉพาะอย่างยิ่งเมื่อคุณรู้สึกว่าไม่ควรลองเพิ่มสิ่งต่อไปนี้ในตอนท้ายของคำถามเพื่อดูว่าจะแก้ไขปัญหาทั้งหมดของคุณได้หรือไม่เนื่องจากคุณอาจต้องใช้4199 ("เปิดใช้งานการแก้ไขทั้งหมด )
SELECT SomeColumn
FROM SomeTable
OPTION(QUERYTRACEON 4199)
ในสถานการณ์ของฉันฉันมีประโยค 10 อันดับแรกที่ทำให้เกิดคำถามที่วิ่งได้โดยไม่ต้องซึ่งเป็นสิ่งที่ทำให้ฉันคิดว่ามีบางสิ่งบางอย่างที่กำลังเกิดขึ้นและ 4199 อาจช่วยได้
ประมาณ 4199
การแก้ไขข้อบกพร่อง / ประสิทธิภาพของ SQL Server Query Optimizer ใด ๆ ที่สร้างขึ้นหลังจากการเปิดตัวเวอร์ชันหลักใหม่จะถูกซ่อนและถูกบล็อก นี่คือในกรณีที่พวกเขาอาจเป็นอันตรายต่อบางโปรแกรมที่ดีที่สุดในทางทฤษฎีอย่างสมบูรณ์แบบ ดังนั้นให้ติดตั้งการอัปเดตตามที่คุณต้องการการเปลี่ยนแปลงเครื่องมือเพิ่มประสิทธิภาพการสืบค้นจริงจะไม่เปิดใช้งานตามค่าเริ่มต้น ดังนั้นเมื่อทำการแก้ไขหรือปรับปรุงครั้งเดียวแล้ว 4199 ก็กลายเป็นสิ่งจำเป็นหากคุณต้องการใช้ประโยชน์จากมัน เมื่อมีการแก้ไขปรากฏขึ้นมากมายในที่สุดคุณจะพบว่าตัวเองเปิดใช้งานเมื่อหนึ่งในนั้นมีผลกับคุณ โดยทั่วไปโปรแกรมแก้ไขเหล่านี้จะเชื่อมโยงกับค่าสถานะการสืบค้นกลับของตนเอง แต่ใช้ 4199 เป็นหลัก "เปิดการแก้ไขทุกครั้ง"
หากคุณรู้ว่าต้องการการแก้ไขใดคุณสามารถเปิดใช้งานการแก้ไขเป็นชิ้น ๆ แทนที่จะใช้ 4199 หากคุณต้องการเปิดใช้งานการแก้ไขทั้งหมดให้ใช้ 4199
ตกลงคุณต้องการ 4199 ทั่วโลก ...
เพียงแค่สร้างงานตัวแทน SQL ซึ่งทำงานทุกเช้าด้วยบรรทัดต่อไปนี้เพื่อเปิดใช้งานการตั้งค่าสถานะการติดตามทั่วโลก สิ่งนี้จะช่วยให้มั่นใจได้ว่าใครก็ตามที่ปิดเครื่องหรืออื่น ๆ พวกเขาจะถูกเปิดใช้งานอีกครั้ง ขั้นตอนงานนี้มี SQL ที่ค่อนข้างง่าย:
DBCC TRACEON (4199, -1);
โดยที่ -1 ระบุส่วน Global ใน DBCC TRACEON สำหรับข้อมูลเพิ่มเติมดู:
https://msdn.microsoft.com/en-us/library/ms187329.aspx?f=255&MSPPError=-2147217396
แผนการสืบค้น "Recompiling"
ในความพยายามครั้งล่าสุดของฉันฉันต้องเปิดใช้งาน 4199 ทั่วโลกแล้วลบแผนแบบสอบถามแคชที่มีอยู่ :
sp_recompile 'dbo.SomeTable'
https://msdn.microsoft.com/en-us/library/ms181647.aspx?f=255&MSPPError=-2147217396
ที่กระบวนงานที่เก็บไว้ recompile ค้นหาแผนแบบสอบถามใด ๆ ที่เกี่ยวข้องกับวัตถุฐานข้อมูล (เช่นตาราง) และลบแผนแบบสอบถามเหล่านั้นต้องการความพยายามครั้งถัดไปในการเรียกใช้แบบสอบถามที่คล้ายกันเพื่อรวบรวม
ดังนั้นในกรณีของฉัน 4199 ได้เก็บแผนแบบสอบถามที่ไม่ดีไว้ แต่ฉันต้องลบรายการที่ยังถูกแคชผ่าน sp_recompile เลือกตารางใด ๆ จากแบบสอบถามที่ทราบแล้วว่าได้รับผลกระทบและคุณควรลองใช้แบบสอบถามนั้นอีกครั้งสมมติว่าคุณได้เปิดใช้งาน 4199 ทั่วโลกแล้วและล้างแผนแบบสอบถามแคชที่ไม่เหมาะสม
ในบทสรุปที่ 4199
เมื่อคุณใช้ดัชนีการเพิ่มประสิทธิภาพแผนแบบสอบถามอย่างชาญฉลาดกลายเป็นสิ่งสำคัญที่จะใช้ดัชนีเหล่านั้นอย่างชาญฉลาดและสมมติว่าเมื่อเวลาผ่านไปการแก้ไขกระบวนการเพิ่มประสิทธิภาพการสืบค้นจะได้รับการเผยแพร่โดยทั่วไปแล้วคุณอยู่ในน้ำที่ปลอดภัย ตราบใดที่คุณทราบว่าการแก้ไขใหม่บางอย่างอาจไม่ได้เล่นได้ดีเหมือนจริงกับฐานข้อมูลที่ได้รับการปรับปรุงให้ดีที่สุดซึ่งได้รับการปรับให้เหมาะสมในสภาพแวดล้อมก่อนหน้านี้ก่อนที่จะแก้ไขปัญหาดังกล่าว แต่ 4199 ทำอะไรได้บ้าง มันเปิดใช้งานการแก้ไขทั้งหมด