如何查看RDS SQL Server数据库及表的空间大小

更新时间:
复制 MD 格式

本文介绍查看RDS SQL Server数据库及表的空间大小的方法。

查看实例空间的大小

RDS实例详情页的基本信息页面查看实例总空间及已使用空间大小。

使用量统计区域,查看存储空间的已使用空间和总空间大小。

查看数据库的大小

  1. 通过SSMS客户端连接实例。具体操作,请参见连接SQL Server实例

  2. 查看单个数据库的空间使用情况,SQL命令如下:

    USE <数据库名>;
    GO
    EXEC sp_spaceused @updateusage = N'TRUE';

    参数

    说明

    database_size

    数据库总大小,包含数据和日志文件总和。该值始终大于reserved+unallocated space

    unallocated space

    数据库的未分配空间。

    reserved

    已分配的空间总量。

    data

    实际数据占用的空间大小。

    index_size

    索引占用的空间大小。

    unused

    已分配但未使用的空间。

  3. 查看所有数据库的空间使用情况,SQL命令如下:

    USE master
    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

    返回结果示例如下:

    dbName    checkTime            dbSize       logSize
    master    2024-01-01 12:00:00  5.00 MB      1.50 MB
    tempdb    2024-01-01 12:00:00  8.00 MB      0.50 MB
    model     2024-01-01 12:00:00  3.25 MB      0.75 MB

    以上返回结果未包含日志文件的大小,查看日志文件大小的SQL命令如下:

    DBCC SQLPERF(LOGSPACE);

    返回结果包含 Database NameLog Size (MB)Log Space Used (%)Status 四列,分别展示各数据库名称、事务日志大小(MB)、日志空间使用百分比及状态值。

查看数据库中表的大小

  1. 通过SSMS客户端连接实例。具体操作,请参见连接SQL Server实例

  2. 查看数据库中单个表大小,SQL命令如下:

    USE <数据库名>;
    GO
    EXEC sp_spaceused N'<表名>';

    返回结果示例如下:

    name    rows    reserved    data      index_size  unused
    zhtdb   10000   328 KB      304 KB    16 KB       8 KB
  3. 查看数据库中所有表大小,SQL命令如下:

    USE <数据库名>;
    GO
    DECLARE @tabSize TABLE (
    name NVARCHAR(100),
    rows CHAR(20),
    reserved VARCHAR(18),
    data VARCHAR(18),
    index_size VARCHAR(18),
    unused VARCHAR(18)
    );
    INSERT INTO @tabSize 
    EXEC sp_MSForEachTable '
    EXEC sp_spaceused ''?''';
    SELECT * 
    FROM @tabSize 
    ORDER BY CONVERT(INT, REPLACE([data], 'KB', '')) DESC, 2 DESC;

    返回结果示例如下:

    name    rows    reserved    data      index_size  unused
    zhtdb   10000   328 KB      304 KB    16 KB       8 KB

相关文档