我有一個2M字節的存儲空間來存儲我們的嵌入式設備(Linux基地)的一些日誌。由於尺寸非常有限,我們必須實施一些方法來處理達到最大尺寸的情況。一種選擇是使用mmap進行持久化的循環緩衝區。我們正在考慮的另一個選擇是使用sqlite3(當達到最大大小時,刪除最舊的條目,插入新的條目)。當磁盤存儲達到時sqlite3
但據我所知,sqlite3使用頁面(限制4096K或可配置)。我的問題是:
如何從sqlite3計算磁盤使用情況?除了數據庫文件的大小,還需要在這裏計數?
當達到2M時會發生什麼?是否有任何特定的信息或錯誤,我可以檢查刪除最舊的條目?
這是一個很好的方法(性能明智,數據分割明智)刪除條目,然後插入新的?
歡迎任何建議或反饋。
thanks.CL。我做了一個循環來多次插入和刪除條目(每個都通過2M以上的sqlite_exec便利功能完成),我預計文件的大小會增加。但是,它仍然是一樣的。如果可用空間僅由VACCUM收回,這有點矛盾。還有回滾日誌文件在哪裏?我只能在目錄中找到數據庫文件。 – pepero
可用空間*可以被其他行重用; VACUUM影響文件大小。使用默認[設置](http://www.sqlite.org/pragma.html#pragma_journal_mode),回滾日誌在每次事務之後被刪除。 –
是的,回滾日誌只是臨時文件。我現在明白了。我也嘗試插入,例如2M行,這會導致例如82066432字節數據庫文件的大小,然後我刪除所有這些行。文件大小不縮小。 – pepero