سؤال

لقد رأيت في Oracle 10g ميزة تقدر الوقت المتبقي لاستعلام طويل الأمد وكنت أتساءل عما إذا كان هذا ممكنًا أيضًا في SQL Server (على الأقل في عام 2008؟)؟

لنفترض أن لدي جدولًا كبيرًا جدًا يحتوي على عشرات الملايين من الصفوف (مفهرسة جيدًا وما إلى ذلك).إلخ) وأحتاج إلى البحث عن بعض الصفوف المعينة.أعلم أن الأمر سيستغرق الكثير من الوقت وأنا راضٍ عن ذلك ولكني أود أن أقدم للمستخدم نوعًا من شريط التقدم.

كيف يمكنني إظهار التقدم؟

هل كانت مفيدة؟

المحلول

كنت سأنسى الأمر وأضع دائرة دوارة فحسب!

على الرغم من ذلك، وللمضي قدمًا بفكرة MrTelly، هناك طرق عرض إدارية ديناميكية يمكن أن تمنحك متوسط ​​أوقات التنفيذ لاستعلامات معينة - ربما يمكن أن يوصلك ذلك إلى مكان ما.

http://msdn.microsoft.com/en-us/library/ms188754.aspx

يحرر:لقد رأيت النسبة المئوية كاملة في إجراء sp_whoisactive من Adam Machanic.ربما هذا هو مكان آخر للنظر فيه.يحتوي SQL 2016 على مخزن الاستعلام الذي يحتفظ بمعلومات ذاكرة التخزين المؤقت للخطة - بديلاً لذاكرة التخزين المؤقت لخطة dmv، والتي يتم مسحها عند إعادة التشغيل.

نصائح أخرى

متعلق ب:

توفر أنظمة قاعدة بيانات اليوم ملاحظات قليلة للمستخدم/DBA حول مقدار تنفيذ استعلام SQL.بالنسبة للاستعلامات طويلة المدى ، يمكن أن تكون هذه التعليقات مفيدة للغاية ، على سبيل المثال ، للمساعدة في تحديد ما إذا كان ينبغي إنهاء الاستعلام أو السماح له بالركض إلى الانتهاء.على الرغم من أن المتطلبات المذكورة أعلاه سهلة التعبير عنها ، إلا أن تطوير مؤشر قوي للتقدم لتنفيذ الاستعلام أمر صعب.في هذه الورقة ، ندرس المشكلة المذكورة أعلاه والتقنيات التي يمكن أن تشكل الأساس لتقدير التقدم الفعال.نتائج التحقق من صحة تقنياتنا تجريبيا في خادم Microsoft SQL واعدة.

وأنا لست على علم أداة من شأنها أن تفعل ذلك تلقائيا، ولكن هناك اثنين من البدائل. كسر الاستعلام الخاص بك إلى كتل ...

select blah from table where IdRange between (1 and 100000)

select blah from table where IdRange between (100001 and 200000)

وكما يكمل كل مزود ذلك تحديث شريط التقدم.

وأو هل يمكن أن يسجل طول الوقت الذي يستغرقه لكل من يختار الخاص بك، وتخزين هذه القيم ربما على أساس لكل مستخدم. ثم استخدام هذه المعلومات لإرجاع طول شريط التقدم.

وكلا هذين النهجين هي kludgy جدا، ونأمل شخص يعرف طريقة أفضل.

وبالطبع قد تتمكن من محاولة فك خطة الاستعلام وإصدار حكم بناء على ذلك، ولكن في التعليمات البرمجية التي سيكون من الصعب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top