Performance tuning’de önemli olan
unsurlardan biride hangi tablo üzerinde ne kadar işlem yapıldığını anlamak
olacaktır. Aşağıdaki kodda her bir tablo
için bize bilgiler döndürülecek ve bunlar bize tablolar üzerinde gerçekleşen read
ve write işlem hacmini gösterecektir.
Yalnız dikkat edilmesi gereken bir husus
varki dynamic managament views'dan bu
istatistikler Sql Server her restart edildiğinde temizlenirler. Bu istatistikleri(wait ve latch) aynı zamanda manuel olarak da silebilirsiniz. (Dynamic
Managament Views ve function'lar bize
server'ın durumu hakkında bilgi verir. Buradan Sql Server'ın durumunu
izleyebilir, yaşanan herhangi bir problemi teşhis edebilir yada performans iyileştirmeleri yapabilirsiniz.)
Server'ın daha uzun süre açık olması dynamic management views'ın size daha
güvenilir istatiskler sunmasını sağlayacaktır.
SELECT @@ServerName AS ServerName ,
DB_NAME() AS DBName ,
OBJECT_NAME(ddius.object_id) AS TableName ,
SUM(ddius.user_seeks + ddius.user_scans + ddius.user_lookups)
AS Reads ,
AS Reads ,
SUM(ddius.user_updates) AS Writes ,
SUM(ddius.user_seeks + ddius.user_scans + ddius.user_lookups
+ ddius.user_updates) AS [Reads&Writes] ,
(SELECT DATEDIFF(s, create_date, GETDATE()) / 86400.0
FROM master.sys.databases
WHERE name = 'tempdb'
) AS SampleDays ,
( SELECT DATEDIFF(s, create_date, GETDATE())
AS SecoundsRunnig
AS SecoundsRunnig
FROM master.sys.databases
WHERE name = 'tempdb'
) AS SampleSeconds
FROM sys.dm_db_index_usage_stats ddius
INNER JOIN sys.indexes i ON ddius.object_id = i.object_id
AND i.index_id = ddius.index_id
WHERE OBJECTPROPERTY(ddius.object_id, 'IsUserTable') = 1
AND ddius.database_id = DB_ID()
GROUP BY OBJECT_NAME(ddius.object_id)
ORDER BY [Reads&Writes] DESC;
GO
0 yorum :
Yorum Gönder