2015-08-25 65 views
2

我有一個要求,以支持數據錄入率爲每秒1條(約300KB)的數據庫的收縮。數據庫文件可以達到3GB。當前數據庫沒有自動真空功能。數據庫文件空間超過一定的限制(比如3GB)是最壞的情況。在高輸入頻率應用程序中保留磁盤空間的策略

我目前的策略是刪除最舊的數據(通過聚集主鍵),然後刪除CHECKPOINT DEFRAG。這似乎不可靠,而VACUUM或DEFRAG可能需要很長時間。我不想命名數據庫名稱,但我願意接受建議。

我想知道還有什麼其他策略可以用來保證磁盤空間的可靠(很少或沒有停機時間,O(1)操作速度)。

編輯:作爲報告和SQL數據提取所需的關係數據庫是必要的。

固定大小的環形緩衝區 - 正是 - 我需要在關係世界中複製此,使用低足跡DB,快「圓形」的行爲(即快速插入)

+2

請列出一些要求。你真的需要關係數據庫嗎?等等 –

+1

它顯然你想要的東西沿固定大小的循環緩衝區的行。一旦數據庫文件達到您的大小限制(3GB),爲什麼不簡單地使用新的數據條目覆蓋最舊的條目。如果您提供更多關於正在使用的數據庫框架的詳細信息,則有人將能夠提出正確的實施方案。 – TheCodeArtist

+0

數據(300Kb)是否需要在數據庫中? - 如果數據可以單獨存儲(例如3Gb循環文件),那麼數據庫可能會表現得很好 – mksteve

回答

1

1)確定的多少行您可以根據需求存儲數據。

2)使用與#1相關的整數的主鍵。

3)創建一種方法來跟蹤主鍵使用情況,例如,在單獨的表中存儲使用情況的主鍵和時間戳。

4)插入時總是抓住已使用的最早的主鍵,然後用新數據更新該行。

如果執行得當,這會將行數限制爲您在#1中指定的行數。

相關問題