Postgresql |设备上没有剩余空间

时间:2018-06-13 09:40:41

标签: postgresql database-administration postgresql-9.6

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

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

enter image description here

下面是确切的错误

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.

导致此问题的原因是什么?

修改

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% /

2 个答案:

答案 0 :(得分:5)

很可能有一些查询会创建大型临时文件,这些文件会暂时填满您的硬盘。一旦查询完成(或已经失败),这些文件将被删除,因此文件系统在您查看时有足够的可用空间。

context.WithCancel(r.Context())中设置log_temp_files = 10240(并重新加载)以记录超过10 MB的所有临时文件,然后您可以检查日志文件以查看这是否确实是原因。

尝试识别错误的查询并修复它们。

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

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

答案 1 :(得分:0)

在这样的大型记录上尝试使用限制(例如100):

select .... from table .... limit (100);