الأعراض
في Microsoft SQL Server 2016 أو SQL Server 2017 على Windows، قد تواجه أداء منخفضا في الظروف التالية:
- عند تشغيل عدة عمليات INSERTSELECT متزامنة في الجداول المؤقتة.
- عند الاستعلام sys.dm_os_waiting_tasks. في هذه الحالة، يعرض العمود resource_description طلبات الانتظار على صفحات المساحة الفارغة في الصفحات (PFS) لطلبات متعددة.
السبب
تم تقديم INSERT parallelism لعمليات INSERTSELECT في SQL Server 2016 أو SQL Server 2017 على Windows. يتم الآن تمكين INSERTs في الجداول المؤقتة المحلية (تلك المحددة بواسطة البادئة # فقط، وليس الجداول المؤقتة العمومية المحددة بواسطة بادئات ##) تلقائيا للتوازي دون الحاجة إلى تعيين تلميح TABLOCK الذي تتطلبه الجداول غير المؤقتة.
على الرغم من أن التوازي INSERT يحسن أداء الاستعلام عادة، فإذا كان هناك عدد كبير من عمليات INSERTSELECT المؤقتة المتزامنة للجدول، فقد يكون الخلاف مهما ضد صفحات PFS. في بعض الحالات، قد يتسبب ذلك في انخفاض الأداء بشكل عام.
الدقة
تم تصحيح المشكلة أولا في حزمة الخدمة 1 ل SQL Server 2016. بعد تطبيق SQL Server 2016 SP1، إدراجات متوازية في INSERT. يتم تعطيل SELECT إلى الجداول المؤقتة المحلية افتراضيا مما يقلل من الخلاف على صفحة PFS ويحسن الأداء العام لحمل العمل المتزامن. إذا كانت الإدخالات الموازية للجداول المؤقتة المحلية مطلوبة، فيجب على المستخدمين استخدام تلميح TABLOCK أثناء الإدراج في الجدول المحلي المؤقت.
إذا قمت بتمكين علامة التتبع 9495 المذكورة في قسم الحل البديل، فمن المستحسن تعطيل علامة التتبع وإزالتها بعد تطبيق SQL Server 2016 SP1 حيث تقوم علامة التتبع 9495 بتعطيل الإدراج المتوازي بغض النظر عن تلميح TABLOCK.
معلومات التحديث التراكمي
تم إصلاح هذه المشكلة في التحديث التراكمي التالي ل SQL Server 2016:
حول التحديثات التراكمية ل SQL Server