هل من الجيد إعادة استخدام كائنات أمر ADO.NET؟
-
20-09-2019 - |
سؤال
أنا أعمل على برنامج .NET ينفذ البرامج النصية التعسفية مقابل قاعدة بيانات.
عندما بدأ زميل في كتابة رمز الوصول إلى قاعدة البيانات ، قام ببساطة بعرض كائن أمر واحد إلى بقية التطبيق الذي يتم إعادة استخدامه (الإعداد CommandText
/Type
, ، الدعوة ExecuteNonQuery()
وما إلى ذلك) لكل عبارة.
أتصور أن هذا هو أداء كبير لبيانات متكررة متكررة ، لأنها يتم تحليلها من جديد في كل مرة.
ما أتساءل عنه ، على الرغم من ذلك ، هو: هل سيؤدي ذلك أيضًا إلى تدهور سرعة التنفيذ إذا كان كل عبارة تختلف عن الإلغاء السابق (ليس فقط المعلمات المختلفة ، ولكن عبارة مختلفة تمامًا)؟ لم أستطع بسهولة العثور على إجابة على ذلك في الوثائق.
راجع للشغل ، فإن RDBMS المستخدمة هو Oracle ، لكنني أعتقد أن هذا السؤال ليس قاعدة بيانات محددة حقًا.
ملاحظة: أعلم أن تعريض الشيء نفسه Command
الكائن ليس آمنًا لخيط الخيط ، لكن هذه ليست مشكلة هنا.
المحلول
هناك بعض النفقات العامة المشاركة في إنشاء كائنات أوامر جديدة ، وهكذا في بعض الحالات ، قد يكون من المنطقي إعادة استخدام نفس الأمر. ولكن نظرًا لأن الحالة العامة يتم فرضها على تطبيق كامل ، فإن الأمر يبدو أكثر من ذلك بعض الشيء.
نصائح أخرى
عادةً ما يأتي ضرب الأداء من إنشاء اتصال بقاعدة البيانات ، لكن ADO.NET ينشئ مجموعة اتصال للمساعدة هنا.
إذا كنت ترغب في تجنب تحليل العبارات في كل مرة من جديد ، فيمكنك وضعها في إجراءات مخزنة.
أتصور أن زميلك يستخدم فقط بعض نهج النمط القديم الذي ورثه من العمل على منصات أخرى حيث كان إعادة استخدام كائن أمر أحدث فرقًا.