เป็นเอกสารที่ค่อนข้างดีว่า UDF บังคับให้ใช้แผนอนุกรมโดยรวม
ฉันไม่แน่ใจว่ามันเป็นเอกสารที่ดี
- ฟังก์ชัน T-SQL แบบสเกลาร์จะป้องกันการขนานในทุกที่ในแผน
- ฟังก์ชัน scalar CLR สามารถดำเนินการแบบขนานตราบใดที่ไม่สามารถเข้าถึงฐานข้อมูล
- ฟังก์ชั่น T-SQL ที่มีมูลค่าเป็นตารางหลายงบบังคับให้โซนอนุกรมในแผนที่อาจใช้การขนานในที่อื่น
- ฟังก์ชัน T-SQL ที่มีค่าเป็นตารางแบบอินไลน์ถูกขยายออกเหมือนมุมมองดังนั้นจึงไม่มีผลกระทบโดยตรง
ดูบังคับแผนดำเนินการคู่ขนานและ / หรือเครกอิสระของการนำเสนอการดำเนินการคู่ขนาน
มีการอ้างสิทธิ์เกี่ยวกับ UDF ที่เป็นกล่องดำจะต้องใช้เคอร์เซอร์
การอ้างสิทธิ์เหล่านี้ไม่ถูกต้อง
คะแนนพิเศษสำหรับการอธิบายว่าทำไมเครื่องยนต์บังคับให้แผนทั้งหมดเป็นอนุกรมแทนที่จะเป็นเพียงขั้นตอนการคำนวณ UDF
ความเข้าใจของฉันคือข้อ จำกัด ในปัจจุบันเป็นผลมาจากรายละเอียดการใช้งานบางอย่าง ไม่มีเหตุผลพื้นฐานที่ฟังก์ชั่นไม่สามารถดำเนินการได้โดยใช้การขนาน
โดยเฉพาะอย่างยิ่งฟังก์ชั่นสเกลาร์ T-SQL จะดำเนินการภายในบริบท T-SQL ที่แยกต่างหากซึ่งทำให้การดำเนินงานการประสานงานและการปิดที่ถูกต้องมีความซับซ้อน (โดยเฉพาะในกรณีที่มีข้อผิดพลาด) อย่างมาก
ตัวแปรตารางจะสนับสนุนการอ่านแบบขนาน (แต่ไม่ใช่การเขียน) โดยทั่วไป แต่ตัวแปรตารางที่แสดงโดยฟังก์ชันที่มีค่าของตารางไม่สามารถรองรับการอ่านแบบขนานได้สำหรับเหตุผลเฉพาะของการใช้งาน คุณจะต้องการใครสักคนที่มีสิทธิ์เข้าถึงซอร์สโค้ด (และอิสระในการแบ่งปันรายละเอียด) เพื่อให้คำตอบที่เชื่อถือได้ฉันกลัว
การสนับสนุน UDF แบบขนานเป็นคุณสมบัติที่เหมาะสมในการร้องขอหรือไม่
แน่นอนถ้าคุณสามารถทำคดีที่แข็งแกร่งพอ ความรู้สึกของตัวเองของฉันอยู่ที่งานที่เกี่ยวข้องจะเป็นที่กว้างขวางเพื่อให้ข้อเสนอของคุณจะต้องตอบสนองมากบาร์สูง ตัวอย่างเช่นคำขอที่เกี่ยวข้อง (และง่ายกว่า) ที่เกี่ยวข้องเพื่อให้ฟังก์ชั่นสเกลาร์แบบอินไลน์ได้รับการสนับสนุนที่ดี แต่ได้เลิกใช้มาหลายปีแล้ว
คุณอาจต้องการอ่านกระดาษ Microsoft:
... ซึ่งสรุปแนวทางที่ Microsoft มองหาเพื่อแก้ไขปัญหาประสิทธิภาพการทำงานของสเกลาร์ T-SQL ในรุ่นหลัง SQL Server 2017
เป้าหมายของ Froid คือเพื่อให้นักพัฒนาสามารถใช้ abstractions ของ UDF และขั้นตอนโดยไม่กระทบต่อประสิทธิภาพ Froid บรรลุเป้าหมายนี้โดยใช้เทคนิคนวนิยายเพื่อแปลงโปรแกรมที่จำเป็นโดยอัตโนมัติให้เป็นรูปแบบพีชคณิตเชิงสัมพันธ์ที่เทียบเท่ากันเมื่อใดก็ตามที่เป็นไปได้ Froid โมเดลบล็อกของโค้ดที่จำเป็นเป็นนิพจน์เชิงสัมพันธ์และรวมเข้าด้วยกันเป็นนิพจน์เดียวโดยใช้ตัวดำเนินการ Apply ซึ่งจะทำให้เครื่องมือเพิ่มประสิทธิภาพการสืบค้นสามารถเลือกแผนการสอบถามแบบขนานที่มีประสิทธิภาพ
(เน้นที่เหมือง)
ฟังก์ชั่นแบบอินไลน์สเกลา T-SQL อยู่ในขณะนี้การดำเนินการใน SQL Server 2019