สิ่งที่สามารถทำงานในโหมดแบตช์ในฐานะของ 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 ที่ไม่มีเอกสารตัวอย่างเช่นจับภาพต่อไปนี้สำหรับคิวการนับแถวในที่เก็บแถว:
การใช้ดัชนี 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) แม้ว่านี่ไม่ใช่เอกสารประกอบอย่างเป็นทางการของผลิตภัณฑ์