سؤال

لدينا مهلات استعلام عشوائية ومتفرقة في مجموعة SQL Server 2005 الخاصة بنا.أملك بعض التطبيقات التي تستخدمه، لذا فأنا أساعد في التحقيق.عند مشاهدة % من وقت وحدة المعالجة المركزية في الأداء العادي، يمكنك بالتأكيد رؤيتها وهي ثابتة.ومع ذلك، فإن مراقب نشاط SQL يوفر فقط الوقت التراكمي لوحدة المعالجة المركزية (CPU) ووقت الإدخال/الإخراج الذي تستخدمه العملية، وليس ما تستخدمه في ذلك الوقت، أو خلال إطار زمني محدد.ربما يمكنني استخدام ملف التعريف وإجراء التتبع، لكن هذه المجموعة مستخدمة بكثافة وأخشى أنني سأبحث عن إبرة في كومة قش.هل أنبح الشجرة الخطأ؟

هل لدى أي شخص بعض الطرق الجيدة لتتبع الاستعلامات/العمليات باهظة الثمن في هذه البيئة؟

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

المحلول

سيعطيك هذا أفضل 50 عبارة حسب متوسط ​​وقت وحدة المعالجة المركزية، تحقق هنا من البرامج النصية الأخرى: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50
        qs.total_worker_time/qs.execution_count as [Avg CPU Time],
        SUBSTRING(qt.text,qs.statement_start_offset/2, 
            (case when qs.statement_end_offset = -1 
            then len(convert(nvarchar(max), qt.text)) * 2 
            else qs.statement_end_offset end -qs.statement_start_offset)/2) 
        as query_text,
        qt.dbid, dbname=db_name(qt.dbid),
        qt.objectid 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY 
        [Avg CPU Time] DESC

نصائح أخرى

لقد وجدت تقارير لوحة معلومات الأداء أن تكون مفيدة للغاية.وهي عبارة عن مجموعة من تقارير RS المخصصة التي توفرها Microsoft.كل ما عليك فعله هو تشغيل برنامج التثبيت على جهاز الكمبيوتر العميل الخاص بك ثم تشغيل setup.sql على مثيل SQL Server.

بعد ذلك، انقر بزر الماوس الأيمن على قاعدة البيانات (لا يهم أي قاعدة بيانات) في SSMS وانتقل إلى التقارير -> التقارير المخصصة.انتقل إلى Performance_dashboard_main.rdl وحدده الموجود في المجلد \Program Files\Microsoft SQL Server\90 ools\PerformanceDashboard بشكل افتراضي.ما عليك سوى أن تفعل ذلك مرة واحدة.وبعد المرة الأولى، سوف يظهر في قائمة التقارير.

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

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

كما يقول ياكوف، قم بتشغيل ملف التعريف لبضع دقائق تحت التحميل النموذجي واحفظ النتائج في جدول يسمح لك بتشغيل الاستعلامات مقابل النتائج مما يسهل اكتشاف أي استعلامات تستنزف الموارد.

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

قم بتشغيل ملف التعريف وقم بتصفية الاستعلامات التي تستغرق أكثر من عدد معين من القراءات.بالنسبة للتطبيق الذي عملت عليه، فإن أي استعلام غير خاص بالتقارير والذي استغرق أكثر من 5000 قراءة يستحق نظرة ثانية.قد يكون لتطبيقك عتبة مختلفة، لكن الفكرة هي نفسها.

هذه الأداة بواسطة Erland Sommarskog مفيد للغاية.

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

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