我需要非常快速的SQLite数据库访问。这样设置参数:如何使用PRAGMA同步=关闭同步到磁盘SQLite数据库
PRAGMA synchronize = OFF
PRAGMA jorunal_mode = MEMORY
使速度足够我的项目。 这些设置使SQLite与操作系统中的数据库文件保持同步。 但有几种情况,一些特定的插入,之后我必须肯定数据写入磁盘。
有什么办法可以强制SQLite将所有数据(在内存日志中等待)写入磁盘?
谢谢。
我需要非常快速的SQLite数据库访问。这样设置参数:如何使用PRAGMA同步=关闭同步到磁盘SQLite数据库
PRAGMA synchronize = OFF
PRAGMA jorunal_mode = MEMORY
使速度足够我的项目。 这些设置使SQLite与操作系统中的数据库文件保持同步。 但有几种情况,一些特定的插入,之后我必须肯定数据写入磁盘。
有什么办法可以强制SQLite将所有数据(在内存日志中等待)写入磁盘?
谢谢。
我建议你使用最近实施的WAL
journal_mode
。通过这种方式,你可以离开synchronous
到normal
和你的全部写入到磁盘的写操作,当您去:
写入数据的速度非常快,因为它们只涉及一次写入 内容(而不是两次回滚期刊交易)和 ,因为写入都是连续的。此外,将内容同步到 不需要磁盘,只要应用程序愿意在断电或硬重启后牺牲持久性。
:(作家 同步上的每个事务的WAL提交如果PRAGMA同步设置 为FULL,但如果PRAGMA同步已设置为正常省略此同步)
上面摘自
如果这还不够,那么当您想要确定您的写入不仅写入磁盘时,还可以调用PRAGMA database.wal_checkpoint;
,但也可以“集成”到您的数据库。检查以下内容以获取更多信息:
这正是我是如何做到这一点。 – kappa