user2368632 Asked: 2021-07-20 06:52:40 +0800 CST2021-07-20 06:52:40 +0800 CST 2021-07-20 06:52:40 +0800 CST 按 IO 统计查询表? 772 有没有我可以运行的 MSSQLServer 查询向我展示: IO 排名靠前的表在给定时间窗口内总体写入? IO 排名靠前的表格在给定时间窗口内整体读取? sql-server sql-server-2014 1 个回答 Voted Best Answer Aleksey Vitsko 2021-07-21T05:47:03+08:002021-07-21T05:47:03+08:00 您所问的问题似乎无法完全实现 或者,您可以执行以下操作: 检查服务器上每个数据库和日志文件的虚拟文件 IO 统计信息(读取、写入、GB 读取、写入、平均读取、写入等) - 自服务器重新启动以来 https://github.com/aleksey-vitsko/Database-Administrator-Tools/blob/master/Storage%20-%20VirtualFileStats.sql 使用下面的查询来收集给定用户数据库内的表使用信息(每个表的使用量 - 插入、更新、删除、行锁、页锁、范围锁、查找) - 自服务器重新启动以来 选择 s.[名称] [架构名称], t.[名称] [表名], sum(iop.leaf_insert_count) [插入], sum(iop.leaf_delete_count) [删除], sum(iop.leaf_update_count) [更新], sum(iop.row_lock_count) [RowLocks], sum(iop.page_lock_count) [PageLocks], sum(iop.row_lock_count) + sum(iop.page_lock_count) [Row+Page Locks], sum(iop.range_scan_count) [RangeScans], sum(iop.singleton_lookup_count) [查找] FROM sys.dm_db_index_operational_stats(DB_ID(),NULL,NULL,NULL) 作为 iop 加入 sys.indexes 作为我 ON iop.index_id = i.index_id AND iop.object_id = i.object_id 加入 sys.tables AS t ON i.object_id = t.object_id AND i.type_desc IN ('CLUSTERED', 'HEAP') 加入系统架构 t.schema_id = s.schema_id 按 s.[name]、t.name 分组 按 [Row+Page Locks] desc 排序 更新: 在监控工具(Redgate SQL Monitor、Idera 等)中,您实际上可以选择一个时间窗口,并查看该时间窗口的 Top Queries,按 IO 指标(逻辑读取、逻辑写入、CPU 等)排序。这些查询可以提示实际使用了哪些表,您可以从那里进行一些计算/近似
您所问的问题似乎无法完全实现
或者,您可以执行以下操作:
https://github.com/aleksey-vitsko/Database-Administrator-Tools/blob/master/Storage%20-%20VirtualFileStats.sql
更新: