สิ่งใดที่ SQL Server 2014 สามารถใช้งานได้ในโหมดแบตช์


21

เมื่อมีการใช้ดัชนี columnstore ในแบบสอบถาม SQL Server จะสามารถใช้โหมดแบตช์ เอกสารมีความบางในสิ่งที่สามารถทำงานในโหมดแบทช์และสิ่งที่ไม่สามารถทำได้ โปรดดูแผนแบบสอบถาม (สร้างแรงบันดาลใจ) ต่อไปนี้ซึ่งมีสิ่งน่าแปลกใจจำนวนหนึ่งที่ดำเนินการในโหมดแบทช์ (สีเขียว)

ป้อนคำอธิบายรูปภาพที่นี่

(นี่เป็นแผนโดยประมาณฉันใช้แผนจริงเพื่อตรวจสอบว่าโหมดการปฏิบัติจริงเป็นแบทช์จริง ๆ )

โปรดทราบว่าเฉพาะด้านบิลด์ของ T1 เท่านั้นที่ใช้ดัชนี columnstore โพรบอินพุตทั้งหมด (T2 และ T3) เป็นแถว ข้อมูลของพวกเขาดูเหมือนจะเปลี่ยนเป็นโหมดแบทช์ ฉันคิดเสมอว่ามีการใช้งานโหมดแบตช์สำหรับกระแสข้อมูลที่ไหลผ่านด้านโพรบเท่านั้น

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

สิ่งที่สามารถทำงานในโหมดแบตช์ในฐานะของ SQL Server 2014 ได้อย่างแน่นอน


5
เหตุใด SQL Server จึงไม่ใช้โหมดแบตช์สำหรับการสืบค้นข้อมูลแบบแถวเรียงเท่านั้นเช่นกัน เพราะ CS รองรับโหมดแบตช์ ณ ขณะนี้เท่านั้น อาจเป็นประโยชน์สำหรับบางคน การใช้ดัชนี columnstore เป็นข้อกำหนดอย่างเป็นทางการที่จำเป็นเพื่อให้ SQL Server พิจารณาโหมดแบตช์หรือไม่ ใช่ CS เป็นข้อกำหนด ยังมีรายการเชื่อมต่อที่ยังทำงานอยู่รองรับโหมดใช้งานแบทช์สำหรับ Row Store ที่เปิดโดย Neugebauer
Kin Shah

2
ในปี 2559 มีเคล็ดลับที่เป็นไปได้ใหม่ในการรับโหมดแบทช์ซึ่งพิจารณาว่าเป็น BTW sqlmag.com/sql-server/ …
Martin Smith

คำตอบ:


30

สิ่งที่สามารถทำงานในโหมดแบตช์ในฐานะของ SQL Server 2014 ได้อย่างแน่นอน

SQL Server 2014 เพิ่มรายการต่อไปนี้ไปยังรายการต้นฉบับของตัวดำเนินการโหมดแบตช์:

  • เข้าร่วม Hash Outer (รวมถึงการเข้าร่วมเต็มรูปแบบ)
  • Hash Semi Join
  • Hash Anti Semi Join
  • รวมทั้งหมด (การต่อกันเท่านั้น)
  • การรวมแฮชเกลาร์ (ไม่มีกลุ่มโดย)
  • Batch Hash Table Build ถูกลบ

ดูเหมือนว่าข้อมูลสามารถเปลี่ยนเป็นโหมดแบตช์แม้ว่าจะไม่ได้มาจากดัชนีของคอลัมน์

SQL Server 2012 ถูก จำกัด อย่างมากในการใช้ตัวดำเนินการแบทช์ แผนโหมดแบตช์มีรูปร่างคงที่อาศัยการวิเคราะห์พฤติกรรมและไม่สามารถรีสตาร์ทโหมดแบทช์ได้เมื่อมีการเปลี่ยนเป็นการประมวลผลโหมดแถว

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

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

Row to Batch to Row adapters

การใช้ดัชนี columnstore เป็นข้อกำหนดอย่างเป็นทางการที่จำเป็นเพื่อให้ SQL Server พิจารณาโหมดแบตช์หรือไม่

มันเป็นวันนี้ใช่ เหตุผลหนึ่งที่เป็นไปได้สำหรับข้อ จำกัด นี้คือการ จำกัด การประมวลผลโหมดแบตช์เป็น Enterprise Edition โดยธรรมชาติ

เราสามารถเพิ่มตารางดัมมี่แถวศูนย์ด้วยดัชนีแบบคอลัมน์เพื่อกระตุ้นโหมดแบตช์ได้หรือไม่?

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

-- Demo the technique (no performance advantage in this case)
--
-- Row mode everywhere
SELECT COUNT_BIG(*) FROM dbo.FactOnlineSales AS FOS;
GO
-- Dummy columnstore table
CREATE TABLE dbo.Dummy (c1 int NULL);
CREATE CLUSTERED COLUMNSTORE INDEX c ON dbo.Dummy;
GO
-- Batch mode for the partial aggregate
SELECT COUNT_BIG(*) 
FROM dbo.FactOnlineSales AS FOS
LEFT OUTER JOIN dbo.Dummy AS D ON 0 = 1;

วางแผนด้วยการเข้าร่วมหุ่นจำลองด้านซ้าย:

โหมดแบทช์พร้อมโต๊ะจำลอง

เอกสารประกอบนั้นบาง

จริง

ที่ดีที่สุดของแหล่งที่มาอย่างเป็นทางการของข้อมูลจะดัชนี columnstore อธิบายและSQL Server columnstore ปรับแต่งประสิทธิภาพ

SQL Server MVP โกะ Neugebauer มีชุดที่ยอดเยี่ยมใน columnstore ทั่วไปที่นี่

มีรายละเอียดทางเทคนิคที่ดีเกี่ยวกับการเปลี่ยนแปลง 2014 ในรายงานการวิจัยของ Microsoft การปรับปรุงร้านค้าคอลัมน์ SQL Server (pdf) แม้ว่านี่ไม่ใช่เอกสารประกอบอย่างเป็นทางการของผลิตภัณฑ์

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