سؤال

  • ما هذا؟
  • كيف يمكنني تنفيذ تجمع الاتصالات مع MS SQL؟
  • ما هي تداعيات الأداء عندما
    • تنفيذ العديد من الاستعلامات واحدًا تلو الآخر (أيباستخدام حلقة بها تكرارات 30 ألف + تستدعي إجراءً مخزنًا)؟
    • هل تريد تنفيذ بعض الاستعلامات التي تستغرق وقتًا طويلاً (أكثر من 10 دقائق)؟
  • هل هناك أي أفضل الممارسات؟
هل كانت مفيدة؟

المحلول

تجميع الاتصالات هو آلية لإعادة استخدام الاتصالات، حيث أن إنشاء اتصال جديد يكون بطيئًا.

إذا كنت تستخدم سلسلة اتصال MSSQL وSystem.Data.SqlClient، فأنت تستخدمها بالفعل - في .Net تكون هذه الأشياء مخفية في معظم الأوقات.

قد تكون حلقة مكونة من 30 ألف تكرار أفضل كمؤشر من جانب الخادم (ابحث عن عبارات مؤشر T-SQL)، اعتمادًا على ما تفعله في كل خطوة خارج sproc.

الاستعلامات الطويلة جيدة - ولكن كن حذرًا عند استدعائها من صفحات الويب لأن Asp.Net ليس مُحسّنًا حقًا للانتظار الطويل وسوف تنقطع بعض الاتصالات.

نصائح أخرى

مزيد من المعلومات حول شيء تجميع الاتصال ...أنت تستخدمه بالفعل مع SqlClient، ولكن فقط إذا كانت سلسلة الاتصال الخاصة بك متطابقة لكل اتصال جديد تفتحه.ما أفهمه هو أن إطار العمل سوف يقوم بتجميع الاتصالات تلقائيًا عندما يكون ذلك ممكنًا، ولكن إذا كانت سلسلة الاتصال تختلف ولو قليلاً من اتصال إلى آخر، فلن يأتي الاتصال الجديد من التجمع - سيتم إنشاؤه من جديد (لذا فهو أكثر تكلفة) ).

يمكنك استخدام تطبيق مراقبة الأداء مع XP/Vista لمشاهدة اتصالات SQL وسترى بسرعة كبيرة ما إذا كان يتم استخدام التجميع أم لا.ابحث ضمن فئة ".NET CLR Data" في "مراقبة الأداء".

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

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

مما سيترك فقط أفضل الممارسات، والتي أعتقد أنها ستكون سؤالاً جيدًا :)

+1 إلى إجابة كيث.لقد ضرب المسمار مباشرة على رأسه.

مجرد تذكير مهذب من الأسئلة الشائعة:

لقد فتشت الإنترنت قبل طرح سؤالك ، وقد أتيت إلينا مسلحين بالبحث والمعلومات حول سؤالك ...يمين؟

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