gpt4 book ai didi

postgresql - 为什么postgresql在磁盘空间足够的情况下提示错误 'perhaps out of disk space'?

转载 作者:行者123 更新时间:2023-11-29 11:21:09 25 4
gpt4 key购买 nike

我在 ubuntu 12.0.4 上的 postgresql 中运行这个查询:

SELECT t2.p AS prop, t2.o AS obj, COUNT(t2.o) AS num 
FROM "class_Event" AS t1,
((SELECT s,p,o FROM "prop_sliceHasAnomaly")
UNION (SELECT s,p,o FROM "prop_eventHasDuration")
UNION (SELECT s,p,o FROM "prop_sliceHasEndEvent")
UNION (SELECT s,p,o FROM "prop_eventPrecedeInCPU")
UNION (SELECT s,p,o FROM "prop_eventFollowInTask")
UNION (SELECT s,p,o FROM "prop_topObjectProperty")
UNION (SELECT s,p,o FROM "prop_eventDetails")
UNION (SELECT s,p,o FROM "prop_switchTo")
UNION (SELECT s,p,o FROM "prop_eventIsExecutedOn")
UNION (SELECT s,p,o FROM "prop_runningAction")
UNION (SELECT s,p,o FROM "prop_anomalyHasSlice")
UNION (SELECT s,p,o FROM "prop_eventPrecedeInTrace")
UNION (SELECT s,p,o FROM "prop_sliceHasStartEvent")
UNION (SELECT s,p,o FROM "prop_eventHasActiveDuration")
UNION (SELECT s,p,o FROM "prop_eventFollowInTrace")
UNION (SELECT s,p,o FROM "prop_runningTask")
UNION (SELECT s,p,o FROM "prop_eventOrdering")
UNION (SELECT s,p,o FROM "prop_domain")
UNION (SELECT s,p,o FROM "prop_sliceHasFunctionality")
UNION (SELECT s,p,o FROM "prop_traceContainsEvent")
UNION (SELECT s,p,o FROM "prop_eventHasDurationFromPreviousOccurrence")
UNION (SELECT s,p,o FROM "prop_eventPrecedeOccurrence")
UNION (SELECT s,p,o FROM "prop_eventPrecedeinTask")
UNION (SELECT s,p,o FROM "prop_switchFrom")
UNION (SELECT s,p,o FROM "prop_eventEndAt")
UNION (SELECT s,p,o FROM "prop_subPropertyOf")
UNION (SELECT s,p,o FROM "prop_eventFollowOccurrence")
UNION (SELECT s,p,o FROM "prop_eventFollowInCPU")
UNION (SELECT s,p,o FROM "prop_subClassOf")
UNION (SELECT s,p,o FROM "prop_eventHasDurationToNextOccurrence")
UNION (SELECT s,p,o FROM "prop_requestComponent")
UNION (SELECT s,p,o FROM "prop_eventStartAt")
UNION (SELECT s,p,o FROM "prop_range")
UNION (SELECT s,p,o FROM "prop_functionalityHasSlice") ) AS t2
WHERE t1.s = t2.s
GROUP BY t2.p, t2.o
HAVING (COUNT(t2.o) > 1)

但是我从 posgresql 中发现了这个错误:

ERROR:  could not write block 713 of temporary file: Aucun espace disponible sur le périphérique
HINT: Perhaps out of disk space?

********** Erreur **********

ERROR: could not write block 713 of temporary file: Aucun espace disponible sur le périphérique
État SQL :53100
Astuce : Perhaps out of disk space?

我已使用命令 df -h 检查磁盘空间是否足够

df -h
df: «/var/lib/lightdm/.gvfs»: Permission non accordée
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda5 37G 35G 46M 100% /
udev 16G 4,0K 16G 1% /dev
tmpfs 6,3G 984K 6,3G 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 16G 216K 16G 1% /run/shm
/dev/sda6 37G 411M 35G 2% /opt
/dev/sda9 499G 435G 40G 92% /home
/dev/sda7 37G 4,7G 30G 14% /usr
/dev/sda8 37G 5,1G 30G 15% /usr/local

/home 上似乎有 40GB 可用空间磁盘。所以我想知道是什么引起了这个错误?是否有可以在 postgresql 配置中设置的磁盘空间限制参数?

有人对此有想法吗?

最佳答案

它正在写入一个临时文件。他们被写到temp_tablespaces ,其中:

The default value is an empty string, which results in all temporary objects being created in the default tablespace of the current database.

这意味着它将把临时文件写入您的 data_directory。要查看它在哪里,请运行 SHOW data_directory。我希望你会得到类似 /var/lib/pgsql/9.3/data/ 的结果,表明 PostgreSQL 的数据在 /var 中。

(一定要检查这个;如果你的临时表空间在 tempfs 上,那么它基本上就是一个 ramdisk,你应该把它移到别处,因为这对性能不利,而且对于大的临时文件也是一个问题。)

在您的系统上,/var 是完整的 / 文件系统的一部分。因此,包含您的 PostgreSQL 数据的分区已满,而 PostgreSQL 正确地将此报告为错误。

释放空间的选项包括:

  • 确保删除 /tmp 中的旧临时文件

  • /var/log 中删除旧日志文件

  • 删除旧的 PostgreSQL 日志。它们的位置根据您没有提到的操作系统/发行版而有所不同;它们通常位于 /var/log/postgresql//var/lib/pgsql/9.3/data/pg_log 中。 重要:不要删除 PostgreSQL 数据目录中的任何其他内容;特别是,pg_xlogpg_clog 是数据库系统的重要组成部分,不得以任何方式删除、移动或更改。

  • 在 PostgreSQL 中删除或TRUNCATEing 表(永久破坏数据)

  • DROPping PostgreSQL 中不需要的索引

  • 卸载程序

  • ...

但最好的选择是:

  • 获得更大的磁盘。

关于postgresql - 为什么postgresql在磁盘空间足够的情况下提示错误 'perhaps out of disk space'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com