2
我一直在玩inotify和sqlite數據庫,因爲我想知道數據庫文件的寫入頻率。SQLite數據庫寫在讀取
問題是每次發送查詢時都會寫入數據庫文件。讀取(SELECT)或修改(UPDATE)無關緊要。之後,inotify標誌IN_CLOSE_WRITE將始終激活。
我想避免儘可能多的寫作。我在這裏錯過了什麼嗎?不應該在執行修改操作時寫入數據庫嗎?
我一直在玩inotify和sqlite數據庫,因爲我想知道數據庫文件的寫入頻率。SQLite數據庫寫在讀取
問題是每次發送查詢時都會寫入數據庫文件。讀取(SELECT)或修改(UPDATE)無關緊要。之後,inotify標誌IN_CLOSE_WRITE將始終激活。
我想避免儘可能多的寫作。我在這裏錯過了什麼嗎?不應該在執行修改操作時寫入數據庫嗎?
IN_CLOSE_WRITE標誌並不表示寫了某些內容,只表示該文件是用於寫入的。
數據庫不知道您是否會稍後寫入內容,因此它會以寫入權限打開該文件,以避免重新打開該文件。
如果你知道你永遠不想寫,請使用SQLITE_OPEN_READONLY標誌。
感謝您的回答。 我發現我用SQLITE_OPEN_READWRITE打開了所有連接的問題,這就是爲什麼它始終打開寫入的原因。 你知道任何機制來知道一個文件是否確實被寫入? – Nacao
你的意思是,你想知道[inotify](http://man7.org/linux/man-pages/man7/inotify.7.html)是否有修改標誌? –
對不起,我只是意識到我必須檢查IN_MODIFY標誌。 儘管它總是被觸發兩次。 感謝您的幫助。 – Nacao