如何查看磁盘使用状况

最为DBA监控磁盘使用状况是非常非常非常(重要的事情说三遍)重要的工作.

磁盘空间资源的耗尽将造成实例错误,不能继续使用等等问题.

 

那么如何监控磁盘的使用状况?

自动: 报警应用系统监视器SMON,可以提供自动监控功能.

手动:

  • 使用查询 SYS.DM_OS_VOLUME_STATS
  • 使用Powershell
  • 使用wmi
  • 使用PERFMON
今天先说说Query的方式来查询磁盘使用信息.

--显示磁盘的可用空间信息 
EXEC sys.xp_fixeddrives


SELECT DISTINCT 
        vs.volume_mount_point AS [盘符] , 
        ( vs.total_bytes / 1024 ) / 1024 [总大小 MB] , 
        ( vs.available_bytes / 1024 ) / 1024 AS [可用 MB] , 
        CAST(CAST(( 1.0 * ( ( vs.available_bytes / 1024 ) / 1024 ) ) 
        / ( ( vs.total_bytes / 1024 ) / 1024 ) AS DECIMAL(9, 4)) * 100 AS DECIMAL(9,2)) AS [百分比 %] 
FROM    sys.master_files mf 
        CROSS APPLY sys.dm_os_volume_stats(database_id, file_id) vs;


 

1

 

 

使用空间信息得到后,还有一个是非常非常非常关键的, 就是增长量的潜在能力问题. 下面的代码可以查看潜在增长

 

SELECT  mf.database_id AS [DBID] , 
             name AS '名称', 
             mf.file_id AS '文件ID' , 
             CAST(CASE WHEN is_percent_growth = 1 
                       THEN ( ( size * 8 ) * ( growth / 100.0 ) ) / 1024 
                       ELSE ( growth * 8 ) / 1024 
                  END AS DECIMAL(18, 4)) AS [下次增长 MB] , 
             ( vs.available_bytes / 1024 ) / 1024 AS [可用 MB] 
     FROM    sys.master_files mf 
             CROSS APPLY sys.dm_os_volume_stats(database_id, file_id) vs 
     WHERE   CAST(CASE WHEN is_percent_growth = 1 
                       THEN ( ( size * 8 ) * ( growth / 100.0 ) ) / 1024 
                       ELSE ( growth * 8 ) / 1024 
                  END AS DECIMAL(18, 4)) > ( ( vs.available_bytes / 1024 ) 
                                             / 1024 ) / 2; /*这个地方的2 标明在2次增长后会超过配额;*/

总结:

使用DMV可以在DBA的日常工作中提供很多必要的信息.希望大家能活用起来. 




你可能感兴趣的:(SQL,Server)