如何在MemSql中释放已删除数据库的空间

Kis*_*hav 2 scala singlestore

我是MemSQL的新手.我在集群中的MemSQL中创建了一个数据库和表,其中包含5个叶子节点和2个聚合器节点.Spark在同一个集群上运行.一切都处于默认模式.插入的数据和删除相同.select*不返回任何内容.但是当我看到web clusterUI时,每个叶子节点仍然消耗大约6TB的磁盘空间.

在此输入图像描述 在此输入图像描述 磁盘容量说明"这是MemSQL使用的磁盘空间量相对于可用的总磁盘空间.如果已满,则不能创建快照,事务日志或列存储数据".

通过这个描述,我假设6TB以上的磁盘空间是因为MemSQL的使用.

请一些人澄清一下

  1. 默认情况下MemSQL是否也将数据写入磁盘?
  2. 删除内容和删除表后,是否删除写在磁盘上的数据?
  3. 如何释放MemSQL消耗的磁盘空间?我要删除哪个目录?我发现目录"/ var/lib/memsql/leaf-3306"具有此叶节点的所有memsql工件.

Jos*_*tor 5

6TB的使用可能是因为MemSQL,或者可能是因为Spark或其他一些进程.MemSQL ops报告总磁盘使用情况,而不是MemSQL使用的磁盘(工具提示略有误导).

1)行存储表(没有CLUSTERD COLUMNSTORE索引的表)在每次写入时将日志写入磁盘.当日志变得很大时,日志会合并到快照中,默认情况下,我们会保留最后两个快照文件.因此,两个快照中较旧的一个可能包含您删除的数据.您可以使用触发新快照SNAPSHOT <dbName>,这将使GC清除旧的(可能是大的)快照.

2)快照和日志是每个数据库,而不是每个表.删除表不会触发快照/日志清理,但是删除数据库或触发新快照会.

3)您可能不应该手动删除数据目录. DROP DATABASE <db_name>将删除与该数据库关联的所有数据.

对于列存储表,故事略有不同,但我认为"一切都是默认的"意味着没有列存储表.