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

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

本文关键字:OFF 高性能 synchronous PRAGMA 是否      更新时间:2023-10-16

从这个问题:SQLite更新一条记录非常(相对)慢

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

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

我从不同的线程到数据库有许多打开的连接。如果只有一个中央数据库类,用所有线程调用的锁来包装DB,并使用PRAGMA synchronous=OFF来提高速度,这样会更好吗?

PRAGMA synchronous只影响磁盘同步;ie。暂停以确保给操作系统的数据被写入磁盘。动一下锁也没用。

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

还要注意,SQLite不是很并发友好;一次只能有一个连接写入数据库。如果需要高并发性,请考虑使用不同的数据库。

如果您有多个线程,我不建议您关闭同步。我怀疑仅仅通过将锁移到类的外部是否会提高速度

我建议你考虑一下数据库的规范化,这样你就不用每次都读取大量的数据了