以下SQL可查询出当前数据库实例中,那些数据库,那些数据类型是操作IO和IO等待的主要元素。以便分析有关数据库的操作。

 1 with dbio as
 2 (
 3     select
 4     DB_NAME(t.database_id) databasename,
 5     case mf.type when 1 then 'log' else 'data' end file_type,
 6     SUM(t.num_of_bytes_read+t.num_of_bytes_written) as io,
 7     SUM(t.io_stall) io_stall
 8     from
 9     sys.dm_io_virtual_file_stats(null,null) as t
10     join sys.master_files mf on t.database_id=mf.database_id and t.file_id=mf.file_id
11     group by DB_NAME(t.database_id),mf.type
12 )
13 select
14 t.databasename,
15 t.file_type,--文件类型:data:数据,log:日志
16 CAST(1.0*t.io/(1024*1024) as decimal(12,2)) io_mb,--IO操作大小(包含读写,单位:MB)
17 CAST(t.io_stall/1000 as decimal(12,2)) as io_stall_s,--IO等待时间(单位:S)
18 CAST(100.0 * t.io_stall/SUM(t.io_stall) over() as decimal(12,2)) io_stall_pict,--IO等待占总等待时间的百分比
19 ROW_NUMBER() over(order by io_stall desc) rn --行号
20 from
21 dbio t
22 order by t.io_stall desc 

 

posted on 2013-05-15 11:21  代岳强  阅读(3157)  评论(0编辑  收藏  举报