我使用的是BerkeleyDB,DPL的java版本。
在将数据解析到BerkeleyDB时,我将一些临时信息存储在特定的PrimaryIndex中。这个PrimaryIndex占用了很多空间,我想删除存储在那里的所有数据,并释放HD上使用的空间。
做这件事最简单的方法是什么?
谢谢。
原则上您可能需要:
- 更改表结构以将主索引更改为另一列,因为BDB表需要主键
- 更改表结构以删除不再需要的列
Peter是对的,我们需要更具体的细节(如表结构DDL),然后才能给你任何具体的答案。
参见:
- http://dev.mysql.com/doc/refman/5.0/en/bdb-characteristics.html(MySQL的BerkleyDB引擎文档)
- http://en.wikipedia.org/wiki/Data_Definition_Language(表结构DDL)
在不了解更多细节的情况下,您可能需要重写数据,而不需要删除信息。然而,除非你想节省数百GB,否则我不会打扰你。如果你需要的话,我会得到更多的磁盘空间。
我认为您需要执行以下操作:
- 使用所需的体系结构创建新的表结构
- 读取旧结构中的每一行,并将其迁移到新结构中,边走边修改(删除/以其他方式更改数据)
- 如果空间有问题,即使是暂时的,也可以边走边从旧表中删除数据
以上内容是否合适将取决于细节。
使用ALTERTABLE语法的SQL数据库会更容易做到这一点,但我认为您的设计决策是有原因的(可能是基于性能的)。