为什么postgresql会提示错误';可能磁盘空间不足';当有足够的磁盘空间时?
我在ubuntu 12.0.4上的postgresql中运行此查询:为什么postgresql会提示错误';可能磁盘空间不足';当有足够的磁盘空间时?,postgresql,temporary-files,diskspace,Postgresql,Temporary Files,Diskspace,我在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 "pr
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配置中设置的磁盘空间限制参数
有人对此有想法吗?这是在写一个临时文件。他们写信给,为此: 默认值为空字符串,这将导致在当前数据库的默认表空间中创建所有临时对象 这意味着它将把临时文件写入您的
data\u目录
。要查看其位置,请运行showdata\u目录
。我希望您会得到类似于/var/lib/pgsql/9.3/data/
的结果,表明PostgreSQL的数据位于/var
中
(请务必检查此项;如果临时表空间位于tempfs上,那么它基本上是一个ramdisk,您应该将其移到其他位置,因为这不仅对性能有害,而且对大临时文件也是一个问题。)
在您的系统上,/var
是文件系统的一部分,该文件系统已满。因此,包含PostgreSQL数据的分区已满,并且PostgreSQL正确地将此报告为错误
可用空间的选项包括:
- 确保删除
中的旧临时文件/tmp
- 从
/var/log
- 删除旧的PostgreSQL日志。它们的位置根据操作系统/发行版而有所不同,您没有提到这一点;它们通常位于
或/var/log/postgresql/
中重要:请勿删除PostgreSQL数据目录中的任何其他内容;特别是,/var/lib/pgsql/9.3/data/pgu log
和pg_xlog
是数据库系统的重要组成部分,不得以任何方式删除、移动或更改pg_clog
- 删除或截断PostgreSQL中的表(永久销毁数据)
ping PostgreSQL中不需要的索引DROP
- 卸载程序
- 拿一个更大的磁盘
/tmp
,部分原因是当操作系统在使用tempfiles时将它们从它下面删除时,它会感到非常不安。它使用temp_表空间
,在大多数系统上,默认情况下,它位于/var
中的主PostgreSQL数据目录中。我运行的是lunixubuntu2.0.4
,这个错误是在查询执行之后还是之前发生的。因为实际上我无权清理/var
中的空间,我对查询性能感兴趣。因此,我可以考虑代码< > PGADMI3实际返回的时间作为查询的执行时间,即使我还没有得到结果吗?当你在磁盘空间不足时,不要浪费时间去查看性能。您需要可用的磁盘空间才能获得良好的性能。非常完整的文件系统性能很差。不,你不能把PgAdmin报告的时间当作查询执行时间,只是时间到错误。您不知道查询执行完成了多远。说真的,找一个更大的磁盘,或者以其他方式修复存储问题。除非你解决了这个问题,否则你不能做任何有用的事情。