rds for sql server收缩数据库-九游平台
操作场景
云数据库 rds for sql server提供使用存储过程收缩指定数据库的数据文件和日志文件的大小,以释放磁盘部分空间。
前提条件
成功连接rds for sql server实例。通过sql server客户端连接目标实例,具体操作请参见。
功能限制
- 数据库文件大小超过50mb,才可以使用该功能。如果要收缩的数据库文件大小不超过50mb,对该文件的收缩将不起作用。并且会显示相关提示。如下图所示:
- 基于行版本控制的隔离级别下运行的事务可能会阻止收缩操作。若要解决此问题,请执行下列操作之一:
- 终止阻止收缩操作的事务。
- 终止收缩操作。 如果收缩操作终止,所有已完成的工作都会保留。
- 不执行任何操作,并允许收缩操作等到阻塞事务完成。
最佳实践
在计划收缩数据库文件时,请考虑以下信息:
- 在执行会产生大量未用空间的操作(如重启)后,执行收缩操作最有效。
- 大多数数据库都需要一些可用空间,以供常规日常操作使用。如果反复收缩数据库,并且它的大小再次增长,那么常规操作可能需要收缩空间。在这种情况下,反复收缩数据库是一种无意义的操作。
- 收缩操作不保留数据库中索引的碎片状态,通常还会在一定程度上增加碎片。此类碎片是不要反复收缩数据库的另一个原因。
操作步骤
- 执行以下命令,进行数据库收缩。
exec [master].[dbo].[rds_shrink_database] @dbname='mydbname';
表1 参数说明 参数
说明
mydbname
收缩指定数据库的数据库名称。如果未指定,默认收缩所有数据库。
执行结果集如下图所示,每个结果对应指定数据库(或所有数据库)的每个文件的相关信息。
图1 结果集
表2 结果集参数说明 列名称
说明
dbid
当前收缩文件的数据库标识号。
fileid
当前收缩文件的文件标识号。
currentsize
文件当前占用的8kb页数。
minimumsize
文件最低可以占用的8kb页数。此数字对应于文件的大小下限或最初创建大小。
usedpages
文件当前使用的8kb页数。
estimatedpages
数据库引擎估计文件能够收缩到的8kb页数。
- 执行成功后,系统会显示执行进度,并最终进行如下提示:
hw_rds_process_successful: shrink database done.
故障排除
如果在执行数据库收缩后文件大小未改变,请执行以下sql,验证文件是否有足够的可用空间:
select name, size/128.0 - cast(fileproperty(name, 'spaceused') as int)/128.0 as availablespaceinmb from sys.database_files;
示例
- 执行以下命令,对dbtest2数据库进行收缩。
exec [master].[dbo].[rds_shrink_database] @dbname = 'dbtest2';
执行结果如下图所示:
图2 执行结果 - 执行以下命令,对所有数据库进行收缩。
exec [master].[dbo].[rds_shrink_database];
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨