从伯克利数据库中删除主索引



我使用的是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,否则我不会打扰你。如果你需要的话,我会得到更多的磁盘空间。

我认为您需要执行以下操作:

  1. 使用所需的体系结构创建新的表结构
  2. 读取旧结构中的每一行,并将其迁移到新结构中,边走边修改(删除/以其他方式更改数据)
  3. 如果空间有问题,即使是暂时的,也可以边走边从旧表中删除数据

以上内容是否合适将取决于细节。

使用ALTERTABLE语法的SQL数据库会更容易做到这一点,但我认为您的设计决策是有原因的(可能是基于性能的)。

相关内容

  • 没有找到相关文章

最新更新