有什么快速的方法可以从本地数据库中删除所有数据?像 SQL '删除数据库'?
我正在查看文档,但还没有发现任何有趣的东西。
“CLI”方式
使用提供的fdbcli
界面,您可以使用单个clearrange
命令清除数据库中的所有键,如下所示:
fdb> writemode on
fdb> clearrange "" \xFF
Committed (68666816293119)
请注意,它会立即执行并且无法撤消!
此外,任何仍连接到数据库的应用程序可能会继续使用缓存的目录子空间前缀读取/写入数据,这可能会导致数据损坏!您应该确保仅在没有任何活动在使用集群时使用此方法。
该方法要求您的集群处于工作状态,不会立即回收磁盘已用空间,也不会重置集群的读取版本。
“硬”的方式
如果你有一个单节点集群,你可以停止 fdb 服务,删除其data_dir
文件夹中的所有文件,重新启动服务,然后使用fdbcli
,执行configure new single ssd
命令。
这将回收之前使用的磁盘空间,并将所有内容重置为安装后状态。
您可以通过清除整个键范围来做到这一点。
在 Python 中,它看起来像这样:
Database.clear_range('', '\xFF')
根据clear_range
文档,其中 '' 是默认切片开始,而 '\xFF' 是默认切片结束。
您可以在文档中找到有关您正在使用的 API 的 clear_range 的更多信息。
要在 Java 中以编程方式执行此操作:
db.run(tx -> {
final byte[] st = new Subspace(new byte[]{(byte) 0x00}).getKey();
final byte[] en = new Subspace(new byte[]{(byte) 0xFF}).getKey();
tx.clear(st, en);
return null;
});