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 Database Server Toolkit v11.37.11 (Jun2020-SP1)
- 记录了各种
VACUUM
和 FLUSH
命令 here,(请注意 VACUUM
在我的版本中没有 运行)
- 在线查看并阅读邮件列表
非常感谢您的帮助。
通常,在查询执行期间,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()
. 返回的单独列中报告
- 在您的情况下,数据库目录可能包含许多为计算查询而生成的中间数据文件。
我的问题类似于 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 Database Server Toolkit v11.37.11 (Jun2020-SP1)
- 记录了各种
VACUUM
和FLUSH
命令 here,(请注意VACUUM
在我的版本中没有 运行) - 在线查看并阅读邮件列表
非常感谢您的帮助。
通常,在查询执行期间,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()
. 返回的单独列中报告
- 在您的情况下,数据库目录可能包含许多为计算查询而生成的中间数据文件。