MAXDOP = 1, คำแนะนำการสืบค้นและเกณฑ์ค่าใช้จ่ายสำหรับความเท่าเทียม


11

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

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

ใครช่วยให้ฉันรู้ว่าพฤติกรรมที่คาดหวังของคำขอทั้งสองนี้จะเป็นอย่างไร

ตัวอย่างที่ 1:

Instance Maxdop: 1 
CTFP: 50 
Query hint: Maxdop=2 
Query cost: 30

ตัวอย่างที่ 2:

Instance Maxdop: 1
CTFP: 50
Query hint: Maxdop=2
Query cost: 70

คำตอบ:


20

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

คำตอบง่ายๆ: ใช่

รายละเอียด

มีสองสิ่งที่แยกกันเกิดขึ้นที่นี่ซึ่งเป็นสิ่งสำคัญที่จะแยก:

  1. อะไรคือสิ่งที่มีประสิทธิภาพระดับสูงสุดของการขนานสามารถใช้ได้กับการค้นหาหรือไม่?

    ผู้มีส่วนร่วมในเรื่องนี้คือ (กว้าง ๆ ตามลำดับความสำคัญ):

    • MAX_DOPการตั้งค่าผู้ว่าราชการทรัพยากร
    • MAXDOPการตั้งค่าคำใบ้ข้อความค้นหา
    • max degree of parallelismตัวเลือกการกำหนดค่าอินสแตนซ์

    มีการอธิบายรายละเอียดในการตั้งค่า“ ระดับสูงสุดของความเท่าเทียม” ของเซิร์ฟเวอร์, MAX_DOP ของผู้ว่าการทรัพยากรและคำแนะนำการสืบค้น MAXDOP - SQL Server ใดที่ควรใช้ โดย Jack Li วิศวกรการเลื่อนขั้นสูงสำหรับฝ่ายบริการลูกค้าและสนับสนุน Microsoft SQL Server ตารางด้านล่างนี้ทำซ้ำจากลิงค์นั้น:

    ตารางคู่ขนาน

  2. แผนคิวรีจะใช้การขนานหรือไม่

    เครื่องมือเพิ่มประสิทธิภาพการสืบค้น SQL Server จะค้นหาแผนอนุกรมก่อนเสมอ

    จากนั้นถ้า:

    • การเพิ่มประสิทธิภาพเพิ่มเติมเป็นธรรม; และ
    • ค่าใช้จ่ายของแผนอนุกรมที่ดีที่สุดเกินกว่าcost threshold for parallelismค่าการกำหนดค่า


    ... เครื่องมือเพิ่มประสิทธิภาพจะพยายามค้นหาแผนขนาน

    จากนั้นถ้า:

    • พบแผนขนาน (เช่นเป็นไปได้) และ
    • ต้นทุนของแผนขนานนั้นน้อยกว่าแผนอนุกรมที่ดีที่สุด


    ... จะสร้างแผนคู่ขนาน

หมายเหตุ:cost threshold for parallelismจะมีผลต่อการเพิ่มประสิทธิภาพไม่ว่าจะเป็นรูปลักษณ์สำหรับแผนขนาน เมื่อแผนขนานถูกแคชก็จะดำเนินการโดยใช้ความขนานเมื่อมันถูกนำมาใช้ใหม่ (ตราบเท่าที่กระทู้มี) โดยไม่คำนึงถึงการตั้งค่า CTFP


ตัวอย่าง

สำหรับทั้งสองตัวอย่างเช่นอินสแตนซ์ maxdop 1 และคำใบ้แบบสอบถาม maxdop 2 DOP ที่มีประสิทธิภาพที่มีอยู่คือ 2 หากเลือกแผนคู่ขนานมันจะใช้ DOP 2

ตัวอย่างที่ 1

CTFP ที่กำหนดไว้ที่ 50 และแผนอนุกรมที่ถูกที่สุดพบว่ามีค่าใช้จ่าย 30 SQL Server จะไม่พยายามค้นหาแผนขนาน แผนอนุกรมจะถูกสร้างขึ้น

ตัวอย่างที่ 2

CTFP ที่กำหนดไว้ที่ 50 และแผนอนุกรมที่ถูกที่สุดพบว่ามีค่าใช้จ่าย 70, SQL Server จะพยายามค้นหาแผนขนาน ถ้าแผนนี้ (ถ้าพบ) มีต้นทุนน้อยกว่า 70 (ต้นทุนแผนอนุกรม) แผนขนานจะถูกสร้างขึ้น


ผลลัพธ์สุดท้ายของการปรับให้เหมาะสมของแบบสอบถามจะเป็นแผนแคชเดียวเสมอ: อนุกรมหรือขนาน เครื่องมือเพิ่มประสิทธิภาพค้นหาเฉพาะแผนการอนุกรมในเฟสการค้นหา 0 (TP) และsearch1 (QP)

มันอาจแล้ว (ตามที่อธิบายไว้) re-run search1กับความต้องการในการผลิตแผนขนาน ตัวเลือกจะถูกเลือกระหว่างอนุกรมและขนานโดยพิจารณาจากต้นทุนแผนทั้งหมดที่ดีที่สุด ตัวเลือกนั้นมีผลผูกพันในกรณีที่การปรับให้เหมาะสมไปที่การค้นหา2 (การเพิ่มประสิทธิภาพเต็มรูปแบบ) แต่ละขั้นตอนของการปรับให้เหมาะสมพิจารณาทางเลือกมากมาย แต่ผลลัพธ์จากสเตจนั้นเป็นแผนที่ดีที่สุดเพียงครั้งเดียวเสมอซึ่งเป็นแบบอนุกรมหรือแบบขนาน

ฉันเขียนเกี่ยวกับเรื่องนี้ในMyth: SQL Server แคชแผนอนุกรมกับทุกแผนขนาน


2

ตัวอย่างที่ 1 อินสแตนซ์ Maxdop: 1 CTFP: 50 คำใบ้แบบสอบถาม: Maxdop = 2 ค่าใช้จ่ายของแบบสอบถาม: 30

คำแนะนำการค้นหา MAXDOP จะแทนที่ระดับสูงสุดของการตั้งค่าความเหมือนกันของความกว้าง แต่เนื่องจาก CTPF คือ 50 และค่าใช้จ่ายในการสืบค้นเท่ากับ 30 จึงอาจเป็นไปได้สำหรับแผนอนุกรม

ตัวอย่างที่ 2 อินสแตนซ์ Maxdop: 1 CTFP: 50 คำใบ้แบบสอบถาม: Maxdop = 2 ค่าใช้จ่ายของแบบสอบถาม: 70

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

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

คำใบ้ MAXDOPจะแทนที่การตั้งค่าแบบกว้างของอินสแตนซ์สูงสุดของการขนาน

การอ้างอิงจากเอกสารคำแนะนำ MAXDOP

หมายเลข MAXDOP นำไปใช้กับ: SQL Server 2008 ถึง SQL Server 2017

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

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