是否建议使用PRAGMA synchronous = OFF来提高性能

时间:2015-07-20 14:41:05

标签: c++ performance qt sqlite database-optimization

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

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

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

我有许多来自不同线程的数据库的开放连接。如果只有一个中央DataBase类包装所有线程调用的锁并使用PRAGMA synchronous = OFF以便提高速度,那会更好吗?

2 个答案:

答案 0 :(得分:1)

PRAGMA synchronous仅影响磁盘同步;即。暂停以确保将提供给操作系统的数据写入磁盘。移动锁定对此没有帮助。

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

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

答案 1 :(得分:0)

如果你有多个线程,我不会建议你关闭同步。我怀疑只要将锁移到你的班级以外的速度就会增加

我建议您考虑数据库的正常化,以便您不必每次都阅读大量数据。