Kullanılmayan Tabloları Tespit Etmek

17 Tem by NURULLAH ÇAKIR

Kullanılmayan Tabloları Tespit Etmek

İyi bir veritabanı yöneticisi bir veritabanı sistemine bakmaya başladığında ilk yapması gereken işlemlerden biri veritabanlarındaki kullanılmayan indexleri ve tabloları tespit edip kaldırmaktır.

 

Tabloları kaldırmadan önce uygulamacıyla konuşmanız ve aşağıdaki script sonucunda dönen listeyi uygulamacılara göndermeniz ve uygulamacı onayını aldıktan sonra tabloları kaldırmanız daha sağlıklı olacaktır. Çünkü tablo yılda bir kez bir gün kullanılıyor olabilir!

 Kullanılmayan index’leri bulmak için de “Kullanılmayan Indexleri Tespit Etmek” isimli makaleye göz atmak isteyebilirsiniz.

 

Aşağıdaki script yardımıyla sql server servisinin en son restartından bu yana kullanılmamış tabloları bulabilirsiniz.

 

NOT: En az 1 Aydır Kullanılmamış Tabloları Getirir.

 

WITH CTE (ObjectID, SonIslemZamani)
AS
(
    SELECT object_id AS TableName, MAX(Last_User_Seek) as SonIslemZamani
    FROM sys.dm_db_index_usage_stats u
    WHERE database_id = db_id(db_name())
GROUP BY object_id

UNION

    SELECT object_id AS TableName,MAX(last_user_scan) as SonIslemZamani
    FROM sys.dm_db_index_usage_stats u
    WHERE database_id = db_id(db_name())
GROUP BY object_id

UNION

    SELECT object_id AS TableName,MAX(last_user_lookup) as SonIslemZamani
    FROM sys.dm_db_index_usage_stats u
    WHERE database_id = db_id(db_name())
GROUP BY object_id

UNION

    SELECT object_id AS TableName,MAX(last_user_update) as SonIslemZamani
    FROM sys.dm_db_index_usage_stats u
    WHERE database_id = db_id(db_name())
GROUP BY object_id
)


SELECT OBJECT_NAME(ObjectID)AS TableName,
    MAX(SonIslemZamani) as SonIslemTarihi
FROM sys.objects O
LEFT JOIN CTE C ON c.ObjectID=O.object_id
WHERE O.is_ms_shipped=0
AND O.type<>'S'
GROUP BY OBJECTID
HAVING MAX(SonIslemZamani) <DATEADD(month, -1, GETDATE())
ORDER BY MAX(SonIslemZamani) ASC
--ORDER BY OBJECT_NAME(c.ObjectID) -- İsterseniz bu kısmı açarak tablo ismine göre sıralayabilirsiniz.

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir