gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:31:33 24 4
gpt4 key购买 nike

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

enter image description here enter image description here磁盘容量描述说“这是MemSQL使用的磁盘空间量相对于可用磁盘空间总量。当该空间已满时,无法创建快照、事务日志或列存储数据”。

根据此描述,我假设以上 6TB 磁盘空间是由于 MemSQL 使用造成的。

请澄清一下

  1. 默认情况下 MemSQL 也会将数据写入磁盘吗?
  2. 删除内容、删除表后,写入磁盘的数据是否也不会被删除?
  3. 如何释放 MemSQL 占用的磁盘空间?我要删除哪个目录?我发现目录“/var/lib/memsql/leaf-3306”包含该叶节点的所有 memsql 工件。

最佳答案

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

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

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

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

对于列存储表,情况略有不同,但我认为“一切都是默认的”意味着没有列存储表。

关于scala - 如何在 MemSql 中释放已删除数据库的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com