คำถามติดแท็ก batch-mode

1
สิ่งใดที่ SQL Server 2014 สามารถใช้งานได้ในโหมดแบตช์
เมื่อมีการใช้ดัชนี columnstore ในแบบสอบถาม SQL Server จะสามารถใช้โหมดแบตช์ เอกสารมีความบางในสิ่งที่สามารถทำงานในโหมดแบทช์และสิ่งที่ไม่สามารถทำได้ โปรดดูแผนแบบสอบถาม (สร้างแรงบันดาลใจ) ต่อไปนี้ซึ่งมีสิ่งน่าแปลกใจจำนวนหนึ่งที่ดำเนินการในโหมดแบทช์ (สีเขียว) (นี่เป็นแผนโดยประมาณฉันใช้แผนจริงเพื่อตรวจสอบว่าโหมดการปฏิบัติจริงเป็นแบทช์จริง ๆ ) โปรดทราบว่าเฉพาะด้านบิลด์ของ T1 เท่านั้นที่ใช้ดัชนี columnstore โพรบอินพุตทั้งหมด (T2 และ T3) เป็นแถว ข้อมูลของพวกเขาดูเหมือนจะเปลี่ยนเป็นโหมดแบทช์ ฉันคิดเสมอว่ามีการใช้งานโหมดแบตช์สำหรับกระแสข้อมูลที่ไหลผ่านด้านโพรบเท่านั้น ดูเหมือนว่าข้อมูลสามารถเปลี่ยนเป็นโหมดแบตช์แม้ว่าจะไม่ได้มาจากดัชนีของคอลัมน์ นั่นทำให้เกิดคำถาม: ทำไม SQL Server ถึงไม่ใช้โหมดแบตช์สำหรับการสืบค้นแบบแถวเรียงเท่านั้นเช่นกัน อาจเป็นประโยชน์สำหรับบางคน การใช้ดัชนี columnstore เป็นข้อกำหนดอย่างเป็นทางการที่จำเป็นเพื่อให้ SQL Server พิจารณาโหมดแบตช์หรือไม่ เราอาจจะเพิ่มตารางดัมมี่แถวศูนย์ด้วยดัชนีแบบคอลัมน์เพื่อกระตุ้นโหมดแบทช์และรับประสิทธิภาพที่เพิ่มขึ้นได้หรือไม่? สิ่งที่สามารถทำงานในโหมดแบตช์ในฐานะของ SQL Server 2014 ได้อย่างแน่นอน

1
วิธีการใช้ประโยชน์จากโหมดแบทช์ด้วย UNPIVOT (การเข้าร่วมแบบวนซ้ำ)
ฉันมีแบบสอบถามของแบบฟอร์มต่อไปนี้: SELECT ... FROM ColumnstoreTable cs CROSS APPLY ( SELECT * FROM (VALUES ('A', cs.DataA) , ('B', cs.DataB) , ('C', cs.DataC) ) x(Col0, Col1) ) someValues การดำเนินการนี้จะใช้ทุกแถวจากแบบสอบถามย่อยที่สำรองไว้ในคอลัมน์ ( ColumnstoreTable) และคูณแถวเหล่านั้น UNPIVOTนี้เป็นหลัก แบบสอบถามจริงมีขนาดใหญ่กว่านี้ ส่วนนี้ของแบบสอบถามจะดึงข้อมูลไปยังการประมวลผลอื่น ๆ ปัญหาที่นี่คือสิ่งนี้CROSS APPLYถูกนำไปใช้เป็นการเข้าร่วมแบบวนรอบซึ่งเป็นตัวเลือกที่สมเหตุสมผล น่าเสียดายที่การรวมลูปไม่สนับสนุนโหมดแบทช์ ส่วนหนึ่งของแบบสอบถามนี้มีประสิทธิภาพที่สำคัญมากและฉันสงสัยว่าการรันในโหมดแบตช์อาจเป็นประโยชน์อย่างมากต่อประสิทธิภาพ ฉันจะเขียนแบบสอบถามนี้ใหม่เพื่อที่ฉันจะไม่เปลี่ยนจากโหมดแบทช์ได้อย่างไร ฉันลองใช้ตารางชั่วคราวแทนVALUESแต่นั่นไม่ได้เปลี่ยนความจริงที่ว่าไม่มีเงื่อนไขการเข้าร่วมที่เท่าเทียมกันในการเข้าร่วมแฮช

1
เหตุใดหน้าต่างโหมดแบตช์จึงรวมการคำนวณทางคณิตศาสตร์มากเกินไป
แบบสอบถามต่อไปนี้ดำเนินการแบบหน้าต่างSUMเหนือตาราง columnstore ด้วย1500 total rowsซึ่งแต่ละอันมีค่า 0 หรือ 1 และมัน overflows INTชนิดข้อมูล ทำไมสิ่งนี้จึงเกิดขึ้น SELECT a, p, s, v, m, n, SUM(CASE WHEN n IS NULL THEN 0 ELSE 1 END) OVER (PARTITION BY s, v, a ORDER BY p) AS lastNonNullPartition FROM ( SELECT a, p, s, v, m, n, RANK() …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.