هل تشغيل قاعدة بيانات SQL Server 2005 في مستوى التوافق 80 له تأثير سلبي على الأداء؟

StackOverflow https://stackoverflow.com/questions/7237

  •  08-06-2019
  •  | 
  •  

سؤال

يجب أن يكون برنامجنا قادرًا على التشغيل على SQL Server 2000 و2005.لتبسيط عملية التطوير، نقوم بتشغيل قواعد بيانات SQL Server 2005 في مستوى التوافق 80.ومع ذلك، يبدو أداء قاعدة البيانات أبطأ في SQL 2005 منه في SQL 2000 في بعض الحالات (لم نتأكد من ذلك باستخدام المعايير بعد).هل تؤدي ترقية مستوى التوافق إلى 90 إلى تحسين الأداء على خوادم SQL 2005؟

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

المحلول

أعتقد أنني قرأت في مكان ما أن محرك قاعدة بيانات SQL Server 2005 يجب أن يكون أسرع بنسبة 30٪ تقريبًا من محرك SQL Server 2000.ربما يتعين عليك تشغيل قاعدة البيانات الخاصة بك في وضع التوافق 90 للحصول على هذه الفوائد.

لكنني تعثرت في سيناريوهين، حيث يمكن أن ينخفض ​​​​الأداء بشكل كبير عند استخدام mssql 2005 مقارنة بـ mssql 2000:

  1. استنشاق المعلمة:عند استخدام إجراء مخزن، سيقوم خادم SQL بحساب خطة تنفيذ واحدة بالضبط في الوقت الذي تقوم فيه أولاً باستدعاء الإجراء.تعتمد خطة التنفيذ على قيم المعلمات المعطاة لهذا الاستدعاء.في حالتنا، يتم تشغيل الإجراءات التي تستغرق عادةً حوالي 10 ثوانٍ لساعات بموجب mssql 2005.إلق نظرة هنا و هنا.

  2. عند استخدام الاستعلامات الموزعة، يتصرف mssql 2005 بشكل مختلف فيما يتعلق بالافتراضات المتعلقة بترتيب الفرز على الخادم البعيد.السلوك الافتراضي هو أن يقوم الخادم بنسخ الجداول البعيدة بالكامل المتضمنة في استعلام إلى قاعدة بيانات مؤقتة محلية ثم يقوم بتنفيذ الصلات محليًا.الحل البديل هو استخدام OPENQUERY، حيث يمكنك التحكم بالضبط في مجموعة النتائج التي يتم نقلها من الخادم البعيد.

نصائح أخرى

بعد أن قمت بنقل قواعد البيانات إلى عام 2005، فعلت ذلك

تحديث الإحصائيات مع الفحص الكامل؟إعادة بناء الفهارس؟

حاول ذلك أولاً ثم تحقق من الأداء مرة أخرى

لمعلوماتك أيضًا، إذا قمت بتشغيل مستوى التوافق 90، فلن يتم دعم بعض الأشياء بعد الآن مثل الصلات الخارجية ذات النمط القديم (*= and =*)

هل تستخدم تحديدات فرعية في استفساراتك؟

من تجربتي، يمكن لبيان SELECT مع التحديدات الفرعية التي تعمل بشكل جيد على SQL Server 2000 الزحف إلى SQL Server 2005 (يمكن أن يكون أبطأ بمقدار 10 مرات!).

قم بإجراء تجربة - أعد كتابة استعلام واحد لإزالة التحديدات الفرعية وشاهد كيف يتغير أدائه.

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