是否推荐使用 PRAGMA synchronous=OFF 来提高性能

Is it a recommended practice to improve performance using PRAGMA synchronous=OFF

来自这个问题: SQLite updating ONE record is very (relatively) slow

我看到他使用 PRAGMA synchronous=OFF 获得了很大的速度增益。

我面临着非常慢的 sqlite 更新时间 (250 毫秒),我需要从不同的线程做很多更新。

我有许多来自不同线程的数据库打开连接。只有一个中央数据库 class 用所有线程调用的锁包装数据库并使用 PRAGMA synchronous=OFF 以获得这样的速度改进会更好吗?

如果你有多个线程,我不建议你打开同步 off.I 怀疑是否可以通过将锁移到你的 class

之外来提高速度

我建议您考虑数据库的规范化,这样您就不必每次都读取大量数据。

PRAGMA synchronous 只影响磁盘同步; IE。暂停以确保提供给 OS 的数据已写入磁盘。移动锁对此无济于事。

现在看来你只是在猜测;您需要在优化之前进行一些分析。你的慢点在哪里?哪些查询很慢(使用 EXPLAIN QUERY PLAN)?你在ANALYZE吗?

另请注意,SQLite 对并发性不是很友好;一次只有一个连接可以写入数据库。如果需要高并发,可以考虑换个数据库。