سؤال

هل هناك طريقة جيدة الوقت استعلامات SQL عند استخدام Linq to SQL ؟ أنا حقا مثل ميزة تسجيل, ولكن سيكون أمرا رائعا إذا كنت يمكن بطريقة ما أيضا الوقت الذي الاستعلام.أي أفكار ؟

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

المحلول

منشئ ملفات التعريف SQL للحصول على الاستعلام و الوقت و أيضا تنفيذ المسار في محلل استعلام نرى فيها اختناقات.

نصائح أخرى

كما شخصين ، منشئ ملفات التعريف SQL هو الخروج من مربع إلى ذلك.أنا لا أريد أن يكون صدى ولكن أردت تفصيلا أكثر في التفاصيل:ليس فقط أنها لا توفر الفعلية أوقات الدوام من SQL Server (بدلا من التوقيت من التطبيق-الجانب حيث شبكة i/o, اتصال اتصال أوقات البركة تضاف إلى كعكة) لكنه يتيح لك أيضا [في كثير من الأحيان أكثر أهمية] I/O الإحصاءات والأرقام ، تأمين معلومات (حسب الحاجة).... الخ

السبب I/O الإحصاءات أهمية هو أن مكلفة جدا الاستعلام قد تشغيل سريع في حين تستهلك كميات كبيرة من موارد الخادم.على سبيل المثال إذا كان الاستعلام التي يتم تنفيذها في كثير من الأحيان يضرب جداول كبيرة وليس هناك أي مطابقة المؤشرات الناتجة عن عمليات التفحص الجدول, الجداول المتأثرة سوف يكون مؤقتا في الذاكرة من SQL Server (إذا كان يمكن أن).هذا يمكن أن يسبب في بعض الأحيان نفس الاستعلام تنفيذ سريع بتوهج بينما في الواقع هو الإضرار بقية النظام/التطبيق/db قبل تلتهم موارد الخادم.

تأمين معلومات تقريبا المهم -- > صغيرة الاستفسارات القيام PK عمليات البحث عن سجل واحد يمكن أن يكون سيئا الأوقات بسبب تأمين حظر.قرأت في مكان ما أن هذا الموقع كان يعاني من الجمود في' بيتا في وقت مبكر أيام.منشئ ملفات التعريف SQL هو صديقك على تحديد وحل المشاكل الناجمة عن تأمين جدا.

لتلخيص ذلك ؛ إذا كنت تستخدم L2S ، EF عادي ADO - إذا كنت ترغب في التأكد من التطبيق الخاص بك "يتصرف لطيفة" نحو قاعدة بيانات دائما يكون منشئ ملفات التعريف SQL جاهزة خلال تطوير واختبار.فإنه يؤتي ثماره!

تحرير: منذ كتبت الجواب أعلاه لقد وضعت الجديدة runtime التنميط أداة L2S التي تجلب أفضل ما في العالمين معا ؛ I/O احصائيات جانب الخادم أوقات الدوام من SQL Server و SQL Server تنفيذ خطة SQL Server في "عداد المفقودين" مؤشر التنبيهات ، جنبا إلى جنب مع تدار الاستدعاءات أن تجعل من السهل العثور على ما البرمجية التي تم إنشاؤها معين الاستعلام وبعض تصفية متقدمة خيارات تسجيل فقط الاستفسارات التي تفي بمعايير معينة.بالإضافة إلى ذلك, تسجيل عنصر يمكن توزيع مع تطبيقات لجعل وقت تشغيل الاستعلام التنميط يعيش في بيئات العملاء أسهل.يمكن تحميل الأداة من:

http://www.huagati.com/L2SProfiler/ حيث يمكنك أيضا الحصول على 45 يوما مجانا الترخيص التجريبي.

أطول خلفية وصف مقدمة إلى أداة نشرها هنا أيضا:
http://huagati.blogspot.com/2009/06/profiling-linq-to-sql-applications.html

و عينة/تجول استخدام بعض من أكثر تصفية متقدمة خيارات متاحة هنا:
http://huagati.blogspot.com/2009/08/walkthrough-of-newest-filters-and.html

هل يمكن استخدام System.Diagnostics.Stopwatch وسوف تسمح لك لتتبع وقت تنفيذ الاستعلام.فقط تذكر أن Linq->استعلامات SQL لا يعدم حتى يمكنك تعداد أكثر منهم.لاحظ أيضا أنه إذا كنت تسجيل الدخول إلى Console.Out سيكون هناك انخفاض كبير في أداء ضرب.

ما يمكن أن تفعله هو إضافة مخصص TextWriter التنفيذ إلى DataContext.السجل الذي سوف نكتب إنشاء sql إلى ملف أو الذاكرة.ثم حلقة من خلال تلك الاستفسارات ، وتنفيذها مع الخام ADO.NET مدونة بها كل مع ساعة توقيت.

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

أيضا إذا كان ذهابك إلى SQL أداة الطريق أنصح غوغلينغ "أبطأ الاستعلام DMV" والحصول على إجراء مخزن التي يمكن أن تعطيك احصائيات على أبطأ الاستعلامات في ديسيبل.ليس من السهل دائما أن انتقل من خلال التعريف النتائج للعثور على سوء الاستعلامات.أيضا مع حق الاستفسارات على sql 2005 dmv يمكنك أيضا القيام الطلب عن طريق دعونا نقول وحدة المعالجة المركزية مقابلالوقت وهكذا.

ونحن استخدام منشئ ملفات التعريف SQL لاختبار لدينا استفسارات LLBLGen برو.

أفضل أن سجل الاستفسارات إلى ملف و لهم استخدام منشئ ملفات التعريف SQL لآخر لهم وقرص فهارس الاستعلامات.

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