2017-01-13 12 views
1

小さなARMデバイス用のセンサーデータ収集Linuxアプリケーションを構築しています。データはSDカードのSQLiteデータベースに保存されます。リソースが限られているため、(物理的な)DBサイズを定期的にチェックして、古いデータをしばらく毎回削除したいと考えています。SQLiteデータベースのファイルサイズをクエリしますか?

私はファイルサイズを取得するためにC++やOSの関数を使うことができましたが、DBからファイルサイズを直接取得することができれば、よりエレガントで移植性が高いと思います。そうする方法はありますか?

答えて

0

データを削除してもファイルサイズは縮小されません(空きページはデータベースファイルに残り、新しいデータに再利用できます)。

データベースファイルサイズを小さくするにはVACUUMを実行しますが、実際にはファイルをコピーするにはファイルサイズの3倍が必要です。

ファイルサイズを照会するメカニズムはありません。いくつかのOS機能を使用する必要があります。しかし、空きページの数を調べるには、PRAGMA freelist_countを使用してください。

データベースが大きくなりすぎないようにするには、PRAGMA max_page_countを使用してください(エラーを処理する準備ができている必要があります)。

関連する問題