统计数据库空间的使用情况

本文提供两个SQL脚本,分别用于统计数据库中各表及其索引所占用的空间,并评估索引的使用效率,帮助优化数据库性能。

公司数据库服务器的空间越来越紧张、最大的数据库达到400个G,100G 以上的库就有四五个。当然我们应该感到欣慰,数据高速增长说明我们的业务发展较好,但不可否认,我们的应用设计也存在着某些问题。诸如:滥建索引、过度冗余或者是系统在设计时没有考虑对超过价值期的历史数据进行清理。

 

下面这个脚本用来获取数据库每张表/索引的空间使用情况。

ContractedBlock.gifExpandedBlockStart.gifCode


with  pa as 
(
SELECT p.object_id,p.index_id,a.type_desc as pagetype_desc,a.total_pages,a.used_pages,a.data_pages
FROM sys.partitions p JOIN sys.allocation_units a
   
ON p.partition_id = a.container_id
),
indexes 
as
(
    
select object_id,index_id,object_name(object_idas tbname , name as indexname,type_desc as tbtype_desc
    
from sys.indexes
    
where object_id > =100
),
result 
as
(
select i.*,p.pagetype_desc,p.total_pages,p.used_pages,p.data_pages
from pa p inner join indexes i 
on p.object_id=i.object_id and p.index_id=i.index_id
)

select  * from result  order by total_pages desc


 

 

下面这个脚本用以统计索引的使用率

 

 

ContractedBlock.gifExpandedBlockStart.gifCode
declare @dbid int
select @dbid = db_id()
select objectname=object_name(s.object_id), s.object_id, indexname=i.name, i.index_id
, user_seeks, user_scans, user_lookups, user_updates
from sys.dm_db_index_usage_stats s,
sys.indexes i
where database_id = @dbid and objectproperty(s.object_id,'IsUserTable'= 1
and i.object_id = s.object_id
and i.index_id = s.index_id
order by (user_seeks + user_scans + user_lookups + user_updates) asc

转载于:https://www.cnblogs.com/Tianjon/archive/2009/01/16/1377214.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值