sql-server - SQL Server表使用情况统计

标签 sql-server tsql

我想找出数据库中哪些表使用最频繁(我的意思是读/写字节/表大小比率)或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 Scripts Manager

关于sql-server - SQL Server表使用情况统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5129114/

相关文章:

sql - 在 Microsoft Sql Server 2008R2 及更高版本上隐藏登录数据库

sql-server - SQL Server - 如何删除计算列上的 IsPersisted 属性

c# - EF 4 在列类型为 varchar 的 SQL 中生成 UNICODE 字符串常量。如何避免?

sql-server - CONTAINSTABLE - FULL TEXT INDEX 中是否有等同于 OR 的子句

sql - 如何插入表并获取主键值?

sql-server - mssql字符串拆分和更新列

sql-server - 指数数组的边界之外。 (微软.SqlServer.smo)

sql - 更改存储过程显示 `Argument data type ntext is invalid for argument 1 of left function` 错误

sql-server - 找不到文件 dacpac?

sql-server - 我的执行计划的表扫描运算符中的这一列 [Bmk1002] 是什么?