开发者社区> 问答> 正文

【RDS】怎么解决SQL Server实例空间满自动锁的问题?

已解决

怎么解决SQL Server实例空间满自动锁的问题?

展开
收起
云上猫猫 2022-01-13 15:42:49 770 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    查看空间使用状况

    方法一

    通过RDS管理控制台的监控页面查看空间使用情况,详情请参见查看资源和引擎监控。155426074243181_zh-CN.png 参数说明如下。Dingtalk_20220113155754.jpg

    方法二

    通过SQL语句查看所有数据库的数据文件(mdf和ndf文件)和日志文件(ldf文件)的大小,详情请参见RDS for SQL Server如何查看实例、数据库及表占用的空间大小

    方法三

    可是用相关工具查看空间使用状况,具体使用方法可参见SQL Server数据库空间查看工具

    解决空间满自动锁问题

    升级实例的存储空间

    升级实例存储空间后即可解锁实例,关于如何升级实例存储空间,请参见变更配置,若实例存储空间已到最大值,请提交工单联系客服临时解锁实例,再进行后续操作。

    日志文件占用量高的解决方法

    解决方法一

    1、客户端连接实例后执行以下语句。

    select name,log_reuse_wait,log_reuse_wait_desc from sys.databases;

    2、若log_reuse_wait_desc的值是LOG_BACKUP,请收缩事务日志。 说明:若日志文件非常大,日志备份的时间会比较长,并且在收缩日志文件时,如果遇到未提交的事务,会导致单次收缩效果不明显。在单次收缩效果不明显的情况下,建议您再次收缩事务日志。

    解决方法二

    事务日志增长过快的根本原因是事务较多或者有大事务。例如,一个事务中操作了500万行数据,在有这种大事务的情况下,建议您将事务拆分,每个事务操作10万行数据,分50次执行。

    • 数据文件占用量高的解决方法。如果数据库文件占用空间比较多,可以先检查数据文件的使用率。对于文件大但使用率低的数据库,可以进行相应处理。详细步骤如下。

    a、依次执行以下SQL语句,查看数据库的空闲空间。

    USE [$DB_Name];
    SELECT SUM(unallocated_extent_page_count) AS [free pages],
           (SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
    FROM sys.dm_db_file_space_usage;
    

    说明:[$DB_Name]指数据库名。

    b、找到空间使用率较高的数据库,然后执行以下语句,收缩该数据库。

    DBCC SHRINKDATABASE([$DB_Name]);

    也可以执行以下命令来收缩单个文件。

    DBCC SHRINKFILE(file_id,[$Size]);

    说明:[$Size]指收缩以后的大小,而不是要收缩多少,单位MB。

    • 临时文件用量高的解决方法。您可以从实例监控中初步判定临时文件是否占用太多空间。如果临时文件的空间不够,Error Log中也会有相应的记录。关于如何排查临时文件空间不足的情况,请参见Troubleshooting Insufficient Disk Space in tempdb,建议您执行以下操作:

    a、重启实例来快速释放临时文件的空间。

    b、及时释放临时表、行版本、表变量等。

    2022-01-13 16:03:06
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载

相关镜像