- 一:多线程并发优化(Busy Retry 的优化)
- 开启配置
PRAGMA SQLITE_THREADSAFE=2
- 确保同一个句柄同一时间只有一个线程在操作
- 二:I/O 性能优化(保留 WAL 文件大小,mmap 优化)
- 配置
PRAGMA mmap_size=XXX
即可开启mmap - 在WAL文件打开时,用
unixMapfile
将其映射到内存中,SQLite的OS层即会自动识别,将普通的I/O接口切换到mmap上。
- 三:其他优化(禁用文件锁,禁用内存统计锁)
- 关闭文件锁:注释掉
os_unix.c
中所有文件锁相关的操作。 - 关闭内存统计:可以通过
sqlite3_config(SQLITE_CONFIG_MEMSTATUS, 0)
进行关闭。
-
知识参考自微信iOS团队