2016-04-15 124 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标志。 尽管它总是被触发两次。 感谢您的帮助。 – Nacao