PostgreSQL数据库磁盘空间占用剧增后的解决方法

问题描述

阿里云云数据库PostgreSQL数据库磁盘空间占用剧增。

问题原因

  • 原因一:大量更新导致日志剧增,来不及归档和删除,占用了磁盘空间。
  • 原因二:查询操作含有大数据量的排序、连接等操作,处理过程中产生临时表并溢出到磁盘,短时间内造成大量空间占用。

解决方案

  • 原因一的解决方法:提高实例的磁盘空间容量或降低更新频率。
  • 原因二的解决方法:以下SQL语句用于指定每个查询可以使用的临时表空间上限(单位为KB),执行成功后,单个查询生成的临时表空间达到上限就会报错。这样就能及时发现有问题的SQL语句,并避免磁盘空间被占满。通过RDS高权限账号执行以下SQL语句:
    alter role all set temp_file_limit = [$Table_Space_Limit];
    说明 [$Table_Space_Limit]为临时表空间上限。