本文主要介绍如何查看RDS SQL Server实例、数据库及表占用的磁盘空间大小。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
登录RDS控制台,在基本信息页面查看实例空间情况。
use [$DB]
go
sp_spaceused @updateusage=N'true'
注:[$DB]为数据库的库名。系统显示类似如下。
提示:字段介绍如下所示。
参数 说明 database_size 即数据库的大小,它包含日志的大小,始终大于reserved+unallocated_space。 unallocated space 数据库的未分配空间。 reserved 已分配的空间总量。 data 数据使用的空间总量。 index_size 索引使用的空间。 unused 未用的空间量。
USE master该输出结果包含日志文件的大小,查看日志文件的大小的SQL语句如下所示。
go
DECLARE @insSize TABLE(dbName sysname,checkTime VARCHAR(19),dbSize VARCHAR(50),logSize VARCHAR(50))
INSERT INTO @insSize ( dbName, checkTime, dbSize, logSize )
EXEC sp_msforeachdb 'select ''?'' dbName,CONVERT(VARCHAR(19),GETDATE(),120) checkTime,LTRIM(STR(SUM(CASE WHEN RIGHT(FILENAME,3)<>''ldf'' THEN convert (dec (15,2),size) * 8 / 1024 ELSE 0 END),15,2)+'' MB'') dbSize,
LTRIM(STR(SUM(CASE WHEN RIGHT(FILENAME,3)=''ldf'' THEN convert (dec (15,2),size) * 8 / 1024 ELSE 0 END),15,2)+'' MB'') logSize from ?.dbo.sysfiles'
SELECT * FROM @insSize ORDER BY CONVERT(DECIMAL,LTRIM(RTRIM(SUBSTRING(dbSize,1,LEN(dbSize)-2)))) DESC
dbcc sqlperf(logspace)系统显示类似如下。
use [$DB]
go
sp_spaceused N'[$Table]'
注:[$Table]为数据库的表名。系统显示类似如下。
use [$DB] go declare @tabSize table(name nvarchar(100),rows char(20),reserved varchar(18) ,data varchar(18) ,index_size varchar(18) ,nnused varchar(18) ) insert into @tabSize exec sp_msforeachtable 'sp_spaceused ''?''' select * from @tabSize order by convert(int,replace(data,'KB','')) desc,2 desc