2016-04-15 12 views
2

データベースファイルが書き込まれた頻度を知りたいので、inotifyとsqliteデータベースを使いこなしています。SQLiteデータベースの読み書き時

私は、クエリを送信するたびにデータベースファイルが書き込まれるということです。読み取り(SELECT)か変更(UPDATE)かは関係ありません。 inotifyフラグIN_CLOSE_WRITEはそれ以降常にアクティブになります。

できるだけ多くの書き込みを避けたいと思っていました。ここに何もないのですか?データベースを変更する操作を実行するときにのみ、データベースを書き込むべきではありませんか?

答えて

3

IN_CLOSE_WRITEフラグは、何かが書き込まれたことを示すものではなく、ファイルが書き込み用にオープンエンドであったことを示します。

データベースでは、後で何かを書き込むかどうかわからないため、書き込みアクセス権を持ってファイルを開き、再度開く必要がなくなります。

書き込みをしたくない場合は、SQLITE_OPEN_READONLYフラグを使用してください。

+0

ご回答ありがとうございます。 SQLITE_OPEN_READWRITEですべての接続を開いたという問題が見つかりました。そのため、常に書き込み用に開かれたのです。 ファイルが実際に書き込まれたかどうかを知るメカニズムはありますか? – Nacao

+0

あなたは、[inotify](http://man7.org/linux/man-pages/man7/inotify.7.html)に変更のフラグがあるかどうか知りたいのですか? –

+1

申し訳ありませんが、私はIN_MODIFYフラグをチェックする必要があることに気付きました。 しかし、常に2回トリガーされます。 ご協力いただきありがとうございます。 – Nacao

関連する問題