SQLite3性能优化
2010年SQLite3学习笔记之四(性能优化篇)
引言:
小老虎多多的SQLite3性能优化的学习笔记。
SQLite3性能调整主要通过pragma指令来实现。
比如调整:空间释放、磁盘同步、Cache大小等。
一.空间释放
1.如何查询:
PRAGMA auto_vacuum;
含义:查询数据库的auto-vacuum标记。
2.标记含义:
auto-vacuum标记的含义:
正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以后的添加操作中再次使用。这种情况下使用VACUUM命令释放删除得到的空间。但是Vacuum的效率非常低!
3.如何设置:
PRAGMA auto_vacuum = 0 | 1;
当开启auto-vacuum,也就是执行pragma auto_vacuum=1;
当提交一个从数据库中删除数据的事务时,数据库文件自动收缩, (VACUUM命令在auto-vacuum开启的数据库中不起作用)。数据库会在内部存储一些信息以便支持这一功能,这使得 数据库文件比不开启该选项时稍微大一些。
4.注意事项:
只有在数据库中未建任何表时才能改变auto-vacuum标记。试图在已有表的情况下修改不会导致报错。
5.建议:
不要打开。也就是“PRAGMA auto_vacuum = 0;”执行命令。
二.缓存大小
1.如何查询:
PRAGMA cache_size;
查询SQLite一次存储在内存中的数据库文件页数。
2.标记含义:
每页使用约1.5K内存,缺省的缓存大小是2000. 若需要使用改变大量多行的UPDATE或DELETE命令,并且不介意

本文是关于SQLite3性能调优的学习笔记,主要包括空间释放、缓存大小、LIKE运算符、磁盘同步和内存模式的调整。建议关闭auto_vacuum以避免低效的磁盘收缩,增大cache_size提升性能,开启case_sensitive_like以正确处理中文搜索,选择合适的synchronous级别平衡速度与安全性,以及使用内存模式的temp_store提升临时对象处理速度。
最低0.47元/天 解锁文章
622

被折叠的 条评论
为什么被折叠?



