PRAGMA synchronous = OFF
synchronous选项有三种可选状态,分别是full、normal、off
full写入速度最慢,但保证数据是安全的,不受断电、系统崩溃等影响,而off可以加速数据库的一些操作,但如果系统崩溃或断电,则数据库可能会损毁。SQLite3中,该选项的默认值就是full
可以在打开数据库后,调用
sqlite3_exec(db, "PRAGMA synchronous = OFF; ", 0,0,0);
显式使用事务
尽管sqlite3_exec有隐式的事务操作,我们仍然可以显式地将多条记录放在一个事务中处理提升效率:
sqlite3_exec(sqliteObj, "BEGIN", 0, NULL, NULL);
。。。。。。
sqlite3_exec(sqliteObj, "COMMIT", 0, NULL, NULL);
auto_vacuum
PRAGMA auto_vacuum = 0 | 1;
当尝试删除一部分表记录之后,我们会发现SQLite文件大小并没有减小。这是SQLite的一种优化机制:数据库记录删除后,该部分的文件页会被打标记,后续的写操作会再次使用空置的文件页。可以使用VACUUM命令强制释放记录后的文件,也可以通过设置auto_vacuum=1,以在提交删除操作的事务时,数据库文件自动收缩。但VACUUM操作很耗时,慎重开启。
建议 PRAGMA auto_vacuum = 0;
PRAGMA cache_size = Number-of-pages;
修改SQLite一次存储在内存中的数据库文件页数
缺省的缓存大小是2000. 若需要使用改变大量多行的UPDATE或DELETE命令,并且不介意SQLite使用更多的内存的话,可以增大缓存以提高性能。
当使用cache_size pragma改变缓存大小时,改变仅对当前对话有效,当数据库关闭重新打开时缓存大小恢复到缺省大小。
要想永久改变缓存大小,使用default_cache_size pragma.
建议"PRAGMA cache_size =8000"