في السيناريو الذي يعمل فيه الجدول كقائمة انتظار، من الضروري تكوينه والاستعلام عنه بطريقة ما يسمح لعدة عملاء بمعالجة عناصر قائمة الانتظار بشكل متزامن.
عند استخدام قفل الصفوف المتشائم مع UPDLOCK وROWLOCK، يمكن لعامل واحد فقط الحصول على القفل ومعالجة الصف. لحل هذه المشكلة وتمكين المعالجة المتزامنة، فكر في الطريقة التالية:
تنفيذ قائمة الانتظار باستخدام جملة OUTPUT
توفر جملة OUTPUT آلية لاسترداد الصف وتعديله ذريًا . فيما يلي كيفية تنفيذ قائمة انتظار باستخدام جملة OUTPUT:
with CTE as ( SELECT TOP(1) COMMAND, PROCESSED FROM TABLE WITH (READPAST) WHERE PROCESSED = 0) UPDATE CTE SET PROCESSED = 1 OUTPUT INSERTED.*;
ينفذ هذا الاستعلام الخطوات التالية بشكل تلقائي:
تحسين الفهرس المجمع
لتحسين الأداء بشكل أكبر، من الضروري إنشاء فهرس متفاوت المسافات في العمود "المعالجة". وهذا يضمن تخزين البيانات حسب ترتيب المعالجة.
CREATE CLUSTERED INDEX cdxTable on TABLE(PROCESSED, ID);
تجنب الاستعلامات غير القياسية
للحصول على إنتاجية مثالية، من الضروري تجنب الاستعلام عن جدول قائمة الانتظار باستخدام طرق أخرى غير عملية إلغاء قائمة الانتظار الموضحة أعلاه. قد تؤدي محاولة إلقاء نظرة خاطفة على الجدول أو استخدامه لأغراض إضافية إلى حدوث حالة من الجمود وتدهور الأداء.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3