تحديد الكائنات غير المستخدمة في Microsoft SQL Server 2005

StackOverflow https://stackoverflow.com/questions/290773

  •  08-07-2019
  •  | 
  •  

سؤال

إنها مهمة تافهة لمعرفة ما إذا كان الكائن قد تمت الإشارة إليه بواسطة شيء آخر أم لا.ما أود فعله هو تحديد ما إذا كان الأمر كذلك أم لا المستخدمة في الواقع.

كان الحل الذي توصلت إليه يتضمن في الأصل مزيجًا من جدول يحتوي على قائمة بالكائنات في قاعدة البيانات ووظيفة كل ساعة.

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

وفي نهاية فترة الستة أشهر أو ما شابه ذلك، تم فحص محتويات الجدول.أي شيء مدرج في الجدول لم تتم الإشارة إليه منذ أن بدأت المراقبة ربما كان آمنًا للنسخ الاحتياطي والإزالة.

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

لقد كان العمل معه نوعًا من الألم.

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

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

بالنسبة لأولئك منكم الذين يراقبون هذا النوع حاليًا، ما هي الطريقة/الرمز الذي تستخدمونه وهل توصيون به؟

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

المحلول

باستخدام SQL Server 2005، يمكنك استخدام طريقة عرض الإدارة الديناميكية sys.dm_db_index_usage_stats.الاسم يقول "فهرس" ولكن هذا مضلل بعض الشيء - كل جدول لديه مدخل هنا، حتى لو لم يكن لديه أي فهارس.إليك استعلامًا مفيدًا من مجلة SQL:

SELECT 
  t.name AS 'Table', 
  SUM(i.user_seeks + i.user_scans + i.user_lookups) 
    AS 'Total accesses',
  SUM(i.user_seeks) AS 'Seeks',
  SUM(i.user_scans) AS 'Scans',
  SUM(i.user_lookups) AS 'Lookups'
FROM 
  sys.dm_db_index_usage_stats i RIGHT OUTER JOIN 
    sys.tables t ON (t.object_id = i.object_id)
GROUP BY 
  i.object_id, 
  t.name
ORDER BY [Total accesses] DESC

وهنا المقال الأصلي:

http://www.sqlmag.com/Article/ArticleID/53878/sql_server_53878.html

ضع في اعتبارك أنه يتم إعادة تعيين إحصائيات الاستخدام هذه عند إعادة تشغيل SQL Server.

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