เป็นไปได้ไหมที่จะเพิ่มประสิทธิภาพให้มากขึ้นหรือทุกเวลาที่ต้องการ?


18

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

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

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

แน่นอนว่าคุณมีการวนรอบที่แน่นหนาคุณควรเขียนแบบสอบถามใหม่เพื่อให้มันหายไป แต่ทนกับฉัน

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

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

ข้อมูลที่ดีที่สุดที่ฉันพบในที่นี้คือในQuery Processor Modelling Extensions ใน SQL Server 2005 SP1โดย Ian Jose

ใช้แฟล็กการติดตามนี้ด้วยความระมัดระวัง! แต่มันจะมีประโยชน์เมื่อคิดแผนที่ดีกว่า ดูสิ่งนี้ด้วย:

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

คำตอบ:


16

ถัดจากการติดตามค่าสถานะ 2301 มี 8780 ซึ่งทำให้เครื่องมือเพิ่มประสิทธิภาพ 'ทำงานหนักขึ้น' เพราะมันให้เวลามากขึ้น (ไม่ จำกัด ตามที่อธิบายในรายละเอียดที่นี่ (รัสเซีย) และรายละเอียดน้อยลงที่นี่ ) เพื่อทำสิ่งนี้

คำอธิบายโดยละเอียดในภาษาอังกฤษของผู้เขียนต้นฉบับของบทความรัสเซีย ซึ่งรวมถึงคำเตือนของผู้เขียน:

จะไม่แนะนำที่เคยใช้ในการผลิต

รวมทั้งสองและใช้พวกเขา (เลือกอย่างมากผ่านคำแนะนำแบบสอบถาม OPTION (QUERYTRACEON 2301, QUERYTRACEON 8780) กับแบบสอบถามของ inf ซ้อนกัน 4 ระดับ TVF (ที่เดียวที่ด้านล่างจะทำงานจริงใด ๆ และระดับบนจะสัมพันธ์กับผลลัพธ์ ผ่านการสืบค้นย่อย EXISTS) ส่งผลให้ MERGE JOIN เข้าร่วมและ LAZY SPOOLs ที่ช่วยลดเวลาในการดำเนินการลงครึ่งหนึ่ง


4

ไม่คุณไม่สามารถ

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

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

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