我使用java版本的BerkeleyDB,DPL。從berkeley db中刪除主索引
在將數據解析到BerkeleyDB時,我在特定的PrimaryIndex中存儲了一些時態信息。這PrimaryIndex佔用大量的空間,我想放棄存儲在那裏的所有數據,並釋放HD上使用的空間。
什麼是最簡單的方法來做到這一點?
謝謝。
我使用java版本的BerkeleyDB,DPL。從berkeley db中刪除主索引
在將數據解析到BerkeleyDB時,我在特定的PrimaryIndex中存儲了一些時態信息。這PrimaryIndex佔用大量的空間,我想放棄存儲在那裏的所有數據,並釋放HD上使用的空間。
什麼是最簡單的方法來做到這一點?
謝謝。
不知道更多細節,您可能需要重寫數據,而無需刪除所需信息。但是,除非你想節省數百GB,否則我不會打擾。如果你需要的話,我會得到更多的磁盤空間。
原則上,您可能需要:
彼得是對的,我們需要更具體的細節(比如表結構DDL)才能給我們任何具體的答案。
參見:
我沒有任何表結構,我使用直接持久層(DPL)。我的java對象存儲在BTrees中,我只是在這些對象上指定主鍵(帶註釋)。 – jutky 2012-01-08 12:26:25
對不起 - 我錯過了你的問題的第一行。我只通過SQL處理程序(如MySQL)使用BDB。我認爲彼得是正確的 - 您可能需要創建一個新的數據結構並將數據遷移到其中。 – 2012-01-08 12:30:00
我相信你需要做到以下幾點:
以上是否合適取決於細節。
這對使用ALTER TABLE語法的SQL數據庫來說會更容易一些,但我希望有設計決策的原因(可能基於性能)。
我的db是〜45Gb,我懷疑其中一半是我不需要的時間信息。 BDB中的DROP TABLE沒有任何等效性嗎? – jutky 2012-01-08 12:23:04
DROP TABLE將刪除整個表和所有的信息(不僅僅是你想擺脫的列),我懷疑你想要有效的ALTER TABLE。 – 2012-01-08 12:26:17
20 GB的價值約爲1英鎊。如果它很簡單,它的價值就在於此,但我懷疑它沒有,也許不值得擔心。 – 2012-01-08 12:30:04