SNIReadSync تنفيذ بين 120-500 مللي ثانية للاستعلام بسيط. ماذا كنت أبحث عن؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا تنفيذ استعلام بسيط ضد SQL خادم 2005:

protected static void InitConnection(IDbCommand cmd) {
        cmd.CommandText = "set transaction isolation level read uncommitted ";
        cmd.ExecuteNonQuery();            
    }

وكلما الشخصية مع dotTrace 3.1، فإنه يدعي أن طريقة SNIReadSync يأخذ ما بين 100 - 500 مللي ثانية

وأي نوع من الأشياء التي أحتاجها لأن تبحث عن من أجل الحصول على هذا الوقت إلى أسفل؟

وشكرا!

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

المحلول

وأنا لم تختبر، ولكن أتساءل عما إذا كان لديك نفس المشكلة إذا كنت تستخدم TransactionScope مع خيارات IsolationLevel.ReadUncommitted. سيكون لديك لتغليف مجموعة كاملة بك من المكالمات والتي يجب أن ينفي الحاجة إلى هذا البيان. وأنا أدرك أن هذا البيان ليس القلق الأساسي الخاص بك، ولكن بصفة عامة.

وآخر شيء يمكنك القيام به هو خلق طبقة DBConnectionScope (أو الاستفادة من الطبقة بائع موثوق) وخفض العدد الإجمالي من الاتصالات التي يتم فتحها.

نصائح أخرى

وتأكد من تمكين تجمع الاتصال أو سوف تتلقى عقوبة كبيرة في كل مرة يتم فتح الاتصال. في سلسلة الاتصال تحديد تجميع = صحيح، أو إزالة أي إشارة إلى تجميع. أعتقد أن تمكين الافتراضي.

وإصلاح هذه المسألة بالنسبة لي. نأمل أن يساعد لك وللآخرين.

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