Aerospike:删除所有垃圾箱

时间:2014-12-18 12:46:31

标签: aerospike nosql

我正在尝试从我的套装中删除垃圾箱 问题是当我删除它们时,它们仍然显示在

aql> show bins
+-------+------------------+-------+-----------+
| quota | bin              | count | namespace |
+-------+------------------+-------+-----------+
| 32768 | "family"         | 14    | "test"    |
| 32768 | "querybinstring" | 14    | "test"    |
| 32768 | "querybinint"    | 14    | "test"    |
| 32768 | "binstringfoo"   | 14    | "test"    |
+-------+------------------+-------+-----------+

虽然数据已从集中删除。

aql> select * from test.testset
0 rows in set (0.000 secs)

当我的 binNames达到32k限制的唯一binNames约束时会出现问题。
必须重新启动 aerospike才能删除已删除的bin名称。

除了在删除垃圾箱后重启还有其他方法吗? 重新启动空中加速器后会发生什么? (删除已删除的[标记为已删除]垃圾箱)

注意:我已经通过使用

删除垃圾箱进行了测试
  1. client.delete()
  2. 设置过期
  3. 还有一个问题 - 我是否可以通过 aql 从一组中删除所有垃圾箱

2 个答案:

答案 0 :(得分:3)

  • 删除Aerospike中元数据的方法

请查看此讨论论坛,了解删除Aerospike中垃圾箱元数据的方法列表。

https://discuss.aerospike.com/t/bin-names-deletion/731

  • 从AQL删除Bin

您可以使用AQL删除bin,方法是将其设置为NULL

E.g:插入namespace.set(PK,bin)值(' 1',NULL) 将从包含主键' 1'

的记录中删除分档
  • 了解一般删除

Aerospike将数据分为两部分:索引和值。索引始终存储在DRAM中,该值可以存储在SSD或DRAM中(有或没有磁盘用于持久性)。删除记录时,将从索引中删除对它的引用。实际数据不会从磁盘中删除。另一个过程会发现磁盘上的数据没有被使用并回收空间。

请注意,删除的对象可能会重新出现。为此,必须发生以下情况:

必须将节点配置为从磁盘加载数据。如果数据已被删除,但尚未从磁盘中删除。 (即索引条目已被删除)。在这种情况下,当节点启动时,它将从磁盘读取数据并重建索引。由于数据尚未从磁盘中删除,因此节点会认为它仍处于活动状态并为其构建新的索引条目。所以删除的对象将返回。如果您知道将关闭节点,则可以使用快速重启功能阻止已删除的数据返回。即使数据库进程已经关闭,这也会将索引保存在内存中。

较新版本中的另一个选项是使用'冷启动 - 空白'防止数据从磁盘加载的配置,但仅限于从群集中的其他节点迁移。

更多信息: http://www.aerospike.com/docs/reference/configuration/#cold-start-empty

答案 1 :(得分:1)

您创建的每个键空间都将成为Aerospike数据文件夹的一部分。您可以直接删除该文件。

这是我们发现一次删除所有数据的简单方法之一。

folder loc :: /opt/aerospike/usr/