从这个问题: SQLite updating ONE record is very (relatively) slow
我看到他使用PRAGMA synchronous = OFF获得了很大的速度增益。
我面临非常慢的sqlite更新时间(250ms),我需要从不同的线程做很多更新。
我有许多来自不同线程的数据库的开放连接。如果只有一个中央DataBase类包装所有线程调用的锁并使用PRAGMA synchronous = OFF以便提高速度,那会更好吗?
答案 0 :(得分:1)
PRAGMA synchronous
仅影响磁盘同步;即。暂停以确保将提供给操作系统的数据写入磁盘。移动锁定对此没有帮助。
现在看起来你只是在猜测;在优化之前,您需要进行一些分析。你的慢点在哪里?什么查询很慢(使用EXPLAIN QUERY PLAN
)?你是ANALYZE
吗?
另请注意,SQLite不是非常友好的并发性;一次只能有一个连接写入数据库。如果您需要高并发性,请考虑使用其他数据库。
答案 1 :(得分:0)
如果你有多个线程,我不会建议你关闭同步。我怀疑只要将锁移到你的班级以外的速度就会增加
我建议您考虑数据库的正常化,以便您不必每次都阅读大量数据。