数据库可用空间的计算

--> Title  : 数据库可用空间的计算

--> Author : wufeng4552

--> Date   : 2011-01-12

数据库管理员的一个职能就是留意数据库和数据库文件内的空闲空间。自动增长功能作为最后一种手段是很好的,但是主动管理数据库文件是一种更好的方法。如果在文件中有很多的空闲空间,那么这些信息也可以在需要时用来压缩文件。

这里有几点需要提示:

1):随着数据库的不断填充,它的空间也在不断的增长。

2):数据库自动增长时,不会需要多少增多少,一般情况会留出额外的空间 

3):如果数据被删除了,则不会自动将空间释放,占用的空间也会一直保留在数据文件中

有几种方法可以查询可用空间

方法一:

use db_sunrise

go

sp_spaceused

 

/*

database_name database_size      unallocated space

---------------------------------------------------------

db_Sunrise     1410.50 MB         376.93 MB

 

reserved           data               index_size         unused

------------------ ------------------ ------------------

986120 KB          740096 KB          236216 KB          9808 KB

*/

go

sp_spaceused   @updateusage = 'TRUE '

sp_spaceused   @updateusage = 'TRUE '

/*

database_name database_size      unallocated space

---------------------------------------------------

db_Sunrise 1410.50 MB 377.05 MB

reserved           data               index_size         unused

------------------ ------------------ ------------------

986056 KB          740096 KB          236024 KB          9936 KB

*/方法二:

DBCC SQLPERF

这个命令会为你提供每个数据库中日志文件的输出结果。这个命令也会为你提供累计信息,因此如果你有多个日志文件,那么它会提供给你每个数据库所有日志文件的总空闲空间。

DBCC SQLPERF(logspace)

/*

Database Name  Log Size (MB) Log Space Used (%) Status

------------------------------------------------------

db_Sunrise 70.55469      96.74316           0

db_Kcgl    1030.992      99.3326            0

 

*/

方法三:FILEPROPERTY

另一个选项是使用FILEPROPERTY函数的SpaceUsed属性,它将告诉我们使用了多少空间,然后我们可以基于当前的大小来计算可用空间

SELECT DB_NAME() AS DbName,

       name AS FileName,

       size/128.0 AS CurrentSizeMB,

       size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0

               AS FreeSpaceMB

FROM sys.database_files;

/*

DbName    FileName       CurrentSizeMB       FreeSpaceMB

--------------------------------------------------------

db_Sunrise   db_Sunrise      976.375000   281.312500

db_Sunrise   db_Sunrise_log  70.562500    2.289063

db_Sunrise   db_Sunrise_1    363.562500   94.687500

*/

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值