在TRUNCATE或DROP TABLE之后,未从磁盘删除Memsql列存储数据

时间:2017-01-20 16:01:25

标签: memsql

我在memsql中创建了一个columnstore表,并用大约1000万条记录填充它,之后我开始运行几个更新方案。我注意到/ var / lib / memsql / leaf-3307 / data / columns中的数据大小不断增加,似乎没有删除任何内容。最初该文件夹的大小是几百Mb,但在一些完整的表更新后它会快速跳转到几个Gb。 memsql-ops报告的“Columnstore磁盘使用率”也会增加但速度非常慢(远非我在磁盘上看到的)。

这让我觉得数据永远不会从磁盘中删除。 The documentation声明运行OPTIMIZE命令应压缩行段组,并删除已删除的行:

  

删除 - 删除列存储索引中的行会导致在段元数据中将该行标记为已删除,从而将数据保留在行段内。将删除仅包含已删除行的细分,下面介绍的优化过程将压缩需要优化的细分。

运行OPTIMIZE命令没有帮助。我也尝试截断表,甚至放弃它但没有任何帮助。列文件夹中的数据仍然存在。我能找到清理它的唯一方法是DROP整个数据库。

这似乎不是理想的行为,我找不到任何证明它的文档。任何人都可以解释为什么会发生这种情况,是否应该发生或指向一些相关的文件?

提前致谢

1 个答案:

答案 0 :(得分:1)

MemSQL将在每个分区数据库的磁盘上保留columnstore_window_size个字节的已删除列存储数据。这是列存储复制实现的一部分(它保留了一些旧文件,以防奴隶落后)。如果降低该系统变量的值,您将看到磁盘使用量下降。如果您不使用冗余2,降低它是没有害处的。