我想找出数据库中哪些表使用最频繁(我的意思是读/写字节/表大小比率)或IO/表大小比率。决定将哪些表放置在较快的光盘上,将哪些表放置在较慢的光盘上。有什么想法吗?
我尝试使用 dm_db_index_usage_stats
但是如何知道单次查找/扫描下有多少个IO呢?
提前谢谢您。
最佳答案
Select object_schema_name(UStat.object_id)
+ '.' + object_name(UStat.object_id) As [Object Name]
,Case
When Sum(User_Updates + User_Seeks + User_Scans + User_Lookups) = 0 Then Null
Else Cast(Sum(User_Seeks + User_Scans + User_Lookups) As Decimal)
/ Cast(Sum(User_Updates
+ User_Seeks
+ User_Scans
+ User_Lookups) As Decimal(19,2))
End As [Proportion of Reads]
, Case
When Sum(User_Updates + User_Seeks + User_Scans + User_Lookups) = 0 Then Null
Else Cast(Sum(User_Updates) As Decimal)
/ Cast(Sum(User_Updates
+ User_Seeks
+ User_Scans
+ User_Lookups) As Decimal(19,2))
End As [Proportion Of Writes]
, Sum(User_Seeks + User_Scans + User_Lookups) As [Total Read Ops]
, Sum(User_Updates) As [Total Write Ops]
From sys.dm_db_Index_Usage_Stats As UStat
Join Sys.Indexes As I
On UStat.object_id = I.object_id
And UStat.index_Id = I.index_Id
Join sys.tables As T
On T.object_id = UStat.object_id
Where I.Type_Desc In ( 'Clustered', 'Heap' )
Group By UStat.object_id
Order By object_schema_name(UStat.object_id)
+ '.' + object_name(UStat.object_id)
顺便说一句,值得一看的是免费的 Red-Gate 脚本管理器,它有一系列用于诊断信息的 SQL 脚本(不,我不为他们工作)。
关于sql-server - SQL Server表使用情况统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5129114/