日期:2014-05-16  浏览次数:20387 次

【SQL Server DBA】日常巡检1:数据库空间、状态、使用的监控


1、数据库

--所有数据库的大小
exec sp_helpdb


--所有数据库的状态
select name,
       user_access_desc,           --用户访问模式
       state_desc,                 --数据库状态
       recovery_model_desc,        --恢复模式
       page_verify_option_desc,    --页检测选项
       log_reuse_wait_desc         --日志重用等待
from sys.databases


--某个数据库的大小:按页面计算空间,有性能影响,基本准确,有时不准确
use test
go

exec sp_spaceused  
go



--可以@updateusage = 'true',会运行dbcc updateusage
exec sp_spaceused  @updateusage = 'true'


--对某个数据库,显示目录视图中的页数和行数错误并更正
DBCC UPDATEUSAGE('test')

2、数据文件

--查看某个数据库中的所有文件及大小
sp_helpfile 



--查看所有文件所在数据库、路径、状态、大小
select db_name(database_id) dbname,
       type_desc,      --数据还是日志
       name,           --文件的逻辑名称
       physical_name,  --文件的物理路径
       state_desc,     --文件状态
       size * 8.0/1024 as '文件大小(MB)'        
from sys.master_files



--按区extent计算空间,没有性能影响,基本准确,把TotalExtents*64/1024,单位为MB
--同时也适用于计算tempdb的文件大小,但不包括日志文件
dbcc showfilestats

3、日志文件

--查看日志文件所在数据库、路径、状态、大小
select db_name(database_id) dbname,
       type_desc,      --数据还是日志
       name,           --文件的逻辑名称
       physical_name,  --文件的物理路径
       state_desc,     --文件状态
       size * 8.0/1024 as '文件大小(MB)'        
from sys.master_files
where type_desc = 'LOG'



--所有数据库的日志的大小,空间使用率
dbcc sqlperf(logspace)

4、数据文件、日志文件的I/O统计信息

--数据和日志文件的I/O统计信息,包含文件大小
	select database_id,
	       file_id,
	       file_handle,           --windows文件句柄
	       sample_ms,             --自从计算机启动以来的毫秒数
	       
	       num_of_reads,
	       num_of_bytes_read,
	       io_stall_read_ms,      --等待读取的时间
	       
	       num_of_writes,
	       num_of_bytes_written,
	       io_stall_write_ms,
	       
	       io_stall,              --用户等待文件完成I/O操作所用的总时间
	       size_on_disk_bytes     --文件在磁盘上所占用的实际字节数	       
	       
	from sys.dm_io_virtual_file_stats(db_id('test'),   --数据库id
	                                   1 )  --数据文件id	                                   
	union all
	
	select database_id,
	       file_id,
	       file_handle,           --windows文件句柄
	       sample_ms,             --自从计算机启动以来的毫秒数
	       
	       num_of_reads,
	       num_of_bytes_read,
	       io_stall_read_ms,      --等待读取的时间
	       
	       num_of_writes,
	       num_of_bytes_written,
	       io_stall_write_ms,
	       
	       io_stall,              --用户等待文件完成I/O操作所用的总时间
	       size_on_disk_bytes     --文件在磁盘上所占用的实际字节数	
	from sys.dm_io_virtual_file_stats( db_id('test'),   --数据库id
	                                   2 )  --日志文件id

5、对象,包括:表、索引、索引视图等

--不一定准确:某个表的行数,保留大小,数据大小,索引大小,未使用大小
exec sp_spaceused @objname ='temp_lock'


--准确:但有性能影响
exec sp_spaceused @objname ='temp_lock',
                  @updateusage ='true'



--按页统计,没有性能影响,有时不准确
/*======================================================
一次计算多个对象的空间使用情况

sys.