sqlite3性能优化方面的配置

本文探讨了SQLite数据库的synchronous选项,强调了full模式的数据安全性与off模式的性能提升。同时介绍了如何使用BEGIN和COMMIT进行显式事务操作以提高效率。此外,讨论了auto_vacuum设置,建议保持为0以避免频繁的数据库收缩。还提到了调整cache_size以优化内存使用,提升大数据更新和删除操作的性能。
摘要由CSDN通过智能技术生成

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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值