PostgreSQL | 设备上没有剩余空间

Yog*_*ogi 4 postgresql database-administration postgresql-9.6

在PostgreSQL数据库上运行批处理时遇到空间问题。

但是,df -h命令显示计算机有足够的空间

在此处输入图片说明

以下是确切的错误

org.springframework.dao.DataAccessResourceFailureException: PreparedStatementCallback; SQL [INSERT into BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) values (?, ?, ?, ?)]; ERROR: could not extend file "base/16388/16452": No space left on device
  Hint: Check free disk space.
Run Code Online (Sandbox Code Playgroud)

是什么导致此问题?

编辑

postgres数据目录为 /var/opt/rh/rh-postgresql96/lib/pgsql/data

df -h /var/opt/rh/rh-postgresql96/lib/pgsql/data
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2      100G   63G   38G  63% /
Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 7

很可能有些查询会创建大的临时文件,这些文件会临时填充硬盘。查询完成(或失败)后,这些文件将被删除,因此在您查找时文件系统具有足够的可用空间。

设置log_temp_files = 10240postgresql.conf(和重载)来记录所有的临时文件超过10 MB,那么您可以检查日志文件,看看是否这确实是原因。

尝试找出错误的查询并加以解决。

如果临时文件不是问题,则可能是临时表。数据库会话结束时,它们会自动删除。您的应用程序是否使用临时表?

另一种可能是文件是由数据库以外的其他文件创建的。

  • @LaurenzAlbe我正在使用`postgres`的docker化实例,这在我的情况下如何工作? (2认同)