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