في هذا المقال سأقدم بعض الكتابات أو الإجراءات المخزنة لمزود الخدمة عام 2005 والتي كنت تستخدم بانتظام كجزء من إدارة خدمة بلادي. معظم هذه البرامج النصية تسمح بمراقبة استخدام ملقم ، تغيير حجم القواعد ، واستخدام الفهارس وإعادة بناء الآلي أو التحقق من تاريخ استخدام الماضي من جدول.
1. رصد خادم النشاط
رصد مزود خوادم يمكن القول إن واحدة من أهم مسؤوليات المديرين إلى قواعد البيانات. لهذا أنا استخدم sp_WhoIsActive الداخلي التي وضعها آدم Machanic. هذا الإجراء سيتم عرض الطلبات المعلقة على الخادم وجميع المعلومات المرتبطة بها على النحو المستخدم تشغيل التطبيق ، وحدة المعالجة المركزية ، الإدخال / الإخراج أو التطبيقات نفسها.
معلمة في الإجراء لتشغيل الإجراء مرتين في فترة زمنية معينة (مثلا 5s) لقياس النشاط (تقريبا) لحظة من التطبيقات المختلفة ، والتي يمكن بسهولة تحديد التي تستهلك أكثر من وحدة المعالجة المركزية ، واستخدام tempdb أو يجعل الوصول القرص.
الإجراء كما يعرض معلومات حول أنواع الاستعلامات الانتظار والتسبب في كتل.
وفوق كل رابط سيتم عرض ملف نصي المرتبطة بالطلب ومريحة للنظر في تطبيق واضح جدا كثيفة الاستخدام للموارد.
وأكثر سرعة ولكن أقل اكتمالا ، وأنه يمكنني استخدام بانتظام يتوفر هنا.
2. رصد استخدام مساحة القرص
أنا استخدم الإجراء sp_SDS (التسجيل المجاني مطلوب) الذي كتبه ريتشارد أقرع لتوليد تقريرا عن حجم قواعد البيانات وسجلات مثيل. المساحة كما تحسب لكلا النوعين من الملفات والجسم الكلي.
بديل لهذا الإجراء المخزن ليكون من الأسهل على نسخ / لصق إلى جداول البيانات إكسل هو كما يلي :
حدد @ @ الخادم ك مثيل db.name باعتبارها قاعدة سوم (الحالة عندما af.groupid = 0 ثم 0 آخر 8192.0E * af.size / 1048576.0E النهاية) ع Taille_Base ، سوم (الحالة عندما af.groupid = 0 بعد ذلك 8192.0E * af.size / 1048576.0E آخر 0 النهاية) ع Taille_Log ، سوم (8192.0E * af.size / 1048576.0E) كما Taille_Totale من الرئيسي.. sysdatabases ع ديسيبل صلة داخلية رئيسية.. sysaltfiles اس في عن طريق عن طريق [Dbid] = ديسيبل. [Dbid] Db.name أين يست في ( 'توزيع' ، 'الموارد' ، 'الرئيسي' ، 'tempdb' ، 'نموذج' ، 'msdb') المجموعة حسب db.name
إذا كنت تريد لرصد حجم قواعد البيانات الخاصة بك ، فمن المحتمل أن تكون ضرورية لإنشاء جدول معين في إدارة قواعد البيانات. هذا الجدول سوف يحتوي على جميع البيانات التي ترونها لمشاهدة ممتعة. لهذا أنا استخدم DBINFO السيناريو الذي كتبه تيم فورد. يمكن أن سجل في الجدول حجم الملفات (قواعد البيانات وسجلات) ، مساحة حرة ، اسم الملف أو أسلوب الترميم.
ببساطة خلق الوظائف مزود تشغيل هذا البرنامج النصي على فترات منتظمة لتخزين البيانات في الجدول DBINFO ، والتي تسمح لك لإنشاء تقارير أو التنبؤ بتطور حجم القواعد ، على سبيل المثال باستخدام مزود الخدمة تحليل الخدمات.
3. تحليل لمؤشر الأداء
إدارة الفهرس هو مهمة هامة أخرى لإدارة مزود خدمة الشبكة. لتحليل مدى ملاءمة واستخدام هذه الفهارس في الجداول من قاعدة بيانات ، وأنا استخدم النصي ضعها جايسون إستراتيجيات. هذا السيناريو يعرض كافة الأرقام القياسية في قاعدة البيانات (بما في ذلك أكوام ، وهذا يعني ، في الجداول نفسها) وعدد لا يحصى من المعلومات للقاضي جدواها حيث أن عدد بالاشعة ويسعى وفهرستها الأعمدة ، أو مؤشر على حجم تأثير (إيجابي) مؤشر على المستخدمين. كما يعرض البرنامج النصي الفهارس المفقودين التي اقترحها مزود الخدمة.
إذا كنت تريد أن ترى أن يسعى ، الأبحاث ويمسح بسرعة ، يمكنك استخدام البرنامج النصي التالي :
اختر object_name (S. [OBJECT_ID]) مثل [اسم الكائن] أولا [اسم] ك [اسم الرئيسية] USER_SEEKS ، USER_SCANS ، USER_LOOKUPS ، USER_UPDATES كما ق من sys.dm_db_index_usage_stats صلة داخلية كما أنني sys.indexes أولا على [OBJECT_ID] = س [OBJECT_ID] وI. S. index_id = index_id أين OBJECTPROPERTY (S. [OBJECT_ID] ، 'IsUserTable') = 1
لدراسة تأثير طلبات إدراج وتحديث وحذف على المؤشر ، يمكنك استخدام هذا البرنامج :
اختر object_name (A. [OBJECT_ID]) مثل [اسم الكائن] أولا [اسم] ك [اسم الرئيسية] A. LEAF_INSERT_COUNT ، A. LEAF_UPDATE_COUNT ، A. LEAF_DELETE_COUNT من sys.dm_db_index_operational_stats (فارغة ، خالية ، فارغة ، فارغة) ألف صلة داخلية كما أنني sys.indexes أولا على [OBJECT_ID] = A. [OBJECT_ID] وI. A. index_id = index_id أين OBJECTPROPERTY (A. [OBJECT_ID] ، 'IsUserTable') = 1
إلى قائمة المؤشرات المستخدمة وتحديد ما إذا كان أو لا يمكن إزالتها ، يمكنك استخدام البرنامج النصي التالي :
نعلن @ المترجم dbid ، @ VARCHAR dbName (100) حدد @ dbid = DB_ID () ، @ dbName = DB_NAME () ؛ مع partitionCTE (OBJECT_ID ، index_id ، row_count ، partition_count) ليصبح (حدد [OBJECT_ID] ، index_id ، سوم ([ الصفوف]) ك 'row_count' ، العد (partition_id) بأنها 'partition_count' sys.partitions من المجموعة حسب [OBJECT_ID] ، index_id) حدد object_name (I. [OBJECT_ID]) كما objectName ، i.name ، القضية عندما i.is_unique = 1 ثم 'فريد' ELSE''END + كما i.type_desc 'INDEXTYPE' ddius.user_seeks ، ddius.user_scans ، ddius.user_lookups ، ddius.user_updates ، cte.row_count ، القضية عندما partition_count> 1 ثم 'نعم' آخر 'لا 'على إنهاء' تقسيم؟ '، القضية عندما i.type وi.is_unique_constraint = 2 = 0 ثم' إسقاط الرئيسية '+ + i.name' وفي '+ @ dbName +'. dbo '. + object_name (ddius. [OBJECT_ID]) + '،' عندما i.type وi.is_unique_constraint = 2 = 1 ثم 'تغيير الجدول' + @ dbName + '. Dbo'. + object_name (ddius. [OBJECT_ID]) + 'إسقاط القيد' i.name + + '،' ELSE''END باسم 'SQL_DropStatement' من sys.indexes ع ط صلة داخلية بشأن sys.dm_db_index_usage_stats ddius i.object_id = ddius.OBJECT_ID وi.index_id = INNER ddius.index_id ينضمون كوت بشأن اس partitionCTE i.object_id = cte.OBJECT_ID وi.index_id = cte.index_id أين dbid = @ ddius.database_id حسب الترتيب (ddius.user_seeks + ddius.user_scans + ddius.user_lookups (دزك user_updates ؛
أخيرا ، على قائمة المفقودين الفهارس التي اقترحها مزود خدمة ، يمكنك استخدام هذا البرنامج :
حدد ما t.name 'الجدول' 'إنشاء nonclustered مؤشر ix_' + + t.name '_missing_' + كاست (ع VARCHAR ddmid.index_handle (10)) + 'وفي' + ddmid.STATEMENT + '(' + IsNull (ddmid.equality_columns ، '') + هو الحال عندما ddmid.equality_columns غير فارغة وddmid.inequality_columns غير فارغة ثم '،' ELSE''END + IsNull (ddmid.inequality_columns ، '') + ')' + IsNull ( 'تضمين (' ddmid.included_columns + +')؛'، '؛" (ع sql_statement ، Ddmigs.user_seeks ، Ddmigs.user_scans كاست ((ddmigs.user_seeks + ddmigs.user_scans) * Ddmigs.avg_user_impact ع المترجم) ك 'est_impact' ، Ddmigs.last_user_seek من مثل sys.dm_db_missing_index_groups ddmig صلة داخلية sys.dm_db_missing_index_group_stats ع ddmigs على ddmigs.group_handle = ddmig.index_group_handle صلة داخلية كما sys.dm_db_missing_index_details ddmid على ddmig.index_handle = ddmid.index_handle صلة داخلية sys.tables ع ر على ddmid.OBJECT_ID = t.OBJECT_ID أين ddmid.database_id DB_ID = () وكاست ((ddmigs.user_seeks + ddmigs.user_scans) * Ddmigs.avg_user_impact ع المترجم)> 100 ترتيب حسب كاست ((ddmigs.user_seeks + ddmigs.user_scans) * Ddmigs.avg_user_impact ع المترجم) تنازلي ؛
4. إلغاء تجزئة الفهارس
تدريجيا ، كما يتم إضافة المزيد من البيانات أو تحديثها أو حذفها ، الفهارس مجزأة ويمكن أن تتحلل الأداء بشكل ملحوظ. ولذلك فمن المهم أن تكون هناك سياسة لرصد مؤشر التجزئة والإجراءات الواجب اتخاذها في حالة التشرذم أكثر من اللازم.
في حالتي أنا على التوالي على وظيفة في مطلع الاسبوع الذي ينفذ dba_IndexDefrag_sp الداخلي ميشيل Ufford. هذا الإجراء يسمح لك لفحص جميع الأرقام القياسية لجميع قواعد البيانات والأنظمة الخادمة ، اعتمادا على مستوى التجزئة ، لإعادة تنظيم أو لتجديد تماما. الخيارات تتيح إجراء لتغيير مستويات تجزئة اثار اثنين من الإجراءات ، وتحديد قاعدة أو على طاولة واحدة للتحقق أو تحديد عدد المعالجات لاستخدامها.
5. الجداول المستخدمة آخر
بالاعتماد على بيئتك الإنتاج ، فإنه يمكن أن يحدث أن عددا كبيرا جدا من الجداول يتم إنشاؤها من قبل المستخدمين الذين ثم تركت مهجورة. يمكن أن يحدث هذا على سبيل المثال بالنسبة للواردات من الملفات التي يمكن بعد ذلك للاهتمام أن الاختيار في أي مكان آخر على الخادم مزود. يبقى ما إذا كانت هذه الجداول لا تزال تستخدم أو لا قبل حفظها. لهذا يمكنك استخدام البرنامج النصي التالي الذي سيقدم لكم تواريخ الأخير من القراءة والكتابة الجداول الواردة في قاعدة بيانات معينة :
مجموعة ANSI_WARNINGS خارج ؛ تعيين NOCOUNT المعنية ؛ أبدأ مع نادي agg ( اختر [object_id] last_user_seek ، last_user_scan ، last_user_lookup ، last_user_update من sys.dm_db_index_usage_stats أين database_id DB_ID = () ) اختر [مخطط] = OBJECT_SCHEMA_NAME ([object_id]) ، [Table_Or_View] = object_name ([object_id]) ، last_read = ماكس (last_read) last_write = ماكس (last_write) من ( حدد [object_id] ، last_user_seek ، خالية من agg الاتحاد جميعا حدد [object_id] ، last_user_scan ، خالية من agg الاتحاد جميعا حدد [object_id] ، last_user_lookup ، خالية من agg الاتحاد جميعا حدد [object_id] ، خالية من agg last_user_update (ع س ([object_id] ، last_read ، last_write) فرز حسب OBJECT_SCHEMA_NAME ([object_id]) ، object_name ([object_id]) ترتيب حسب 1،2 ؛2 السمات : مزود 2005 ملقم
















