本文主要介绍如何查看RDS SQL Server实例、数据库及表占用的磁盘空间大小。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
登录RDS控制台,在基本信息页面查看实例空间情况。
1 | use [$DB]<br>go<br>sp_spaceused @updateusage =N 'true' |
注:[$DB]为数据库的库名。系统显示类似如下。
提示:字段介绍如下所示。
参数 说明 database_size 即数据库的大小,它包含日志的大小,始终大于reserved+unallocated_space。 unallocated space 数据库的未分配空间。 reserved 已分配的空间总量。 data 数据使用的空间总量。 index_size 索引使用的空间。 unused 未用的空间量。
1 | USE master<br>go<br>DECLARE @insSize TABLE(dbName sysname,checkTime VARCHAR( 19 ),dbSize VARCHAR( 50 ),logSize VARCHAR( 50 ))<br>INSERT INTO @insSize ( dbName, checkTime, dbSize, logSize )<br>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, <br> 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' <br>SELECT * FROM @insSize ORDER BY CONVERT(DECIMAL,LTRIM(RTRIM(SUBSTRING(dbSize, 1 ,LEN(dbSize)- 2 )))) DESC |
1 | dbcc sqlperf(logspace) |
1 | use [$DB]<br>go<br>sp_spaceused N '[$Table]' |
注:[$Table]为数据库的表名。系统显示类似如下。
1 2 3 4 5 | 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 |