MonetDB全盘如何手动释放Space

MonetDB Full Disk How To Manually Free Space

我的问题类似于 this one,本质上我在使用 MonetDB 时忘记了连接中的一个子句,该子句产生了一个巨大的结果,填满了我计算机上的磁盘。 Monetdb 在此之后没有清理,尽管释放 space 并等待 24 小时,但磁盘仍然比应有的多得多。

见下方 monetdb 中的数据库大小(以 GB 为单位):

sql>SELECT CAST(SUM(columnsize) / POWER(1024, 3) AS INT) columnSize FROM STORAGE();
+------------+
| columnsize |
+============+
|        851 |
+------------+
1 tuple

以及磁盘上场的大小:

sudo du -hs ./*
3,2T    ./data_warehouse
5,5M    ./merovingian.log

大小差异无法解释,是在启动生成非常大结果的查询后突然出现的。

我可以将这些文件追踪到 merovingian.log 文件和 warehouse 内的 BAT 目录,其中许多大文件以整数和 .tail.theap 可以找到。:

sudo du -hs ./*
2,0T    ./data_warehouse
1,3T    ./merovingian.log
4,0K    ./merovingian.pid

我的问题是如何在不破坏数据库的情况下手动释放此磁盘 space?是否可以安全删除这些文件中的任何一个,或者是否有可以启动的命令让 MonetDB 释放这个 space?

到目前为止,我已经尝试了以下方法但没有效果:

非常感谢您的帮助。

通常,在查询执行期间,MonetDB 会释放 memory/files 不再需要的内容。但如果没有发生这种情况,您可以尝试以下手动清理。

首先,锁定并停止数据库(这叫warehouse?):

monetdb lock warehouse
monetdb stop warehouse

您可以相当安全地删除 merovingian.log 以获得 1.3T(此日志文件可以包含对调试有用的信息,但以其当前大小,使用起来有点困难)。 kill命令是告诉monetdbd开始一个新的日志文件:

rm /<path-to>/merovingian.log
kill -HUP `pgrep monetdbd`

然后重启数据库:

monetdb release warehouse
monetdb start warehouse

在启动期间,MonetDB 服务器应清理上一个会话遗留的临时数据文件。


关于 SUM(columnsize) 和磁盘大小之间的大小差异:

  • 可以有索引文件和字符串堆文件。它们的大小在 storage().
  • 返回的单独列中报告
  • 在您的情况下,数据库目录可能包含许多为计算查询而生成的中间数据文件。