sqlite 性能优化

根本透过pragma指令来落实。

比如: 空间释放、磁盘同步、Cache大小等。

不用打开。前文提升了,Vacuum的频率十分低!

PRAGMA auto_vacuum; PRAGMA auto_vacuum = 0 | 1;

询问或设置数据库的auto-vacuum标记。

正规状态下,当提交一个从数据库中除去数据的事务时,数据库文件不改变大小。未利用的文书页被标记并在其后的丰硕操作中
再次使用。这种气象下行使VACUUM命令释放删除得到的上空。

当开启auto-vacuum,当提交一个从数据库中去除数据的事务时,数据库文件自动裁减,
(VACUUM命令在auto-vacuum开启的数据库中不起效能)。数据库会在内部存储一些音信以便辅助这一功用,这使得
数据库文件比不开启该选拔时有点大一部分。

除非在数据库中未建其他表时才能更改auto-vacuum标记。试图在已有表的状态下修改不会导致报错。

指出改为8000

PRAGMA cache_size; PRAGMA cache_size = Number-of-pages;

询问或改动SQLite三次存储在内存中的数据库文件页数。每页使用约1.5K内存,缺省的缓存大小是2000.
若需要运用改变大量多行的UPDATE或DELETE命令,并且不介意SQLite使用更多的内存的话,能够增大缓存以增长性能。

当使用cache_size
pragma改变缓存大时辰,改变仅对当下对话有效,当数据库关闭重新打开时缓存大小恢复生机到缺省大大小小。
要想永远改变缓存大小,使用default_cache_size pragma.

开拓。不然搜索中文字串会出错。

PRAGMA case_sensitive_like; PRAGMA case_sensitive_like = 0 | 1;

LIKE运算符的缺省行为是忽略latin1字符的尺寸写。由此在缺省气象下’a’ LIKE
‘A’的值为真。可以透过打开 case_sensitive_like
pragma来改变这一缺省作为。当启用case_sensitive_like,’a’ LIKE
‘A’为假而 ‘a’ LIKE ‘a’如故为真。

开辟。便于调试

PRAGMA count_changes; PRAGMA count_changes = 0 | 1;

询问或转移count-changes标记。正常情状下INSERT,
UPDATE和DELETE语句不回去数据。
当开启count-changes,以上语句再次来到一行含一个整数值的多寡——该语句插入,修改或删除的行数。
重返的行数不包括由触发器爆发的插入,修改或删除等转移的行数。

PRAGMA page_size; PRAGMA page_size = bytes;

查询或安装page-size值。只有在未创立数据库时才能设置page-size。页面大小必须是2的整数倍且超过等于512低于等于8192。
上限可以由此在编译时修改宏定义SQLITE_MAX_PAGE_SIZE的值来改变。上限的上限是32768.

假如有时限备份的体制,而且少量数码丢失可承受,用OFF

PRAGMA synchronous; PRAGMA synchronous = FULL; (2) PRAGMA synchronous =
NORMAL; (1) PRAGMA synchronous = OFF; (0)

查询或改动”synchronous”标记的设定。第一种情势(查询)重返整数值。
当synchronous设置为FULL (2),
SQLite数据库引擎在紧急时刻会停顿以确定数据已经写入磁盘。
这使系统崩溃或电源出问题时能担保数据库在重起后不会损坏。FULL
synchronous很安全但很慢。 当synchronous设置为NORMAL,
SQLite数据库引擎在大部分紧迫时刻会停顿,但不像FULL形式下那么频繁。
NORMAL情势下有很小的几率(但不是不存在)暴发电源故障导致数据库损坏的情况。但实则,在这种情况下很可能你的硬盘已经不可以采纳,或者发生了另外的不足復苏的硬件错误。
设置为synchronous OFF
(0)时,SQLite在传递数据给系统将来直接接轨而不刹车。若运行SQLite的应用程序崩溃,
数据不会危害,但在系统崩溃或写入数据时意外断电的气象下数据库可能会损坏。另一方面,在synchronous
OFF时 一些操作可能会快50倍甚至更多。

在SQLite 2中,缺省值为NORMAL.而在3中修改为FULL.

动用2,内存格局。

PRAGMA temp_store; PRAGMA temp_store = DEFAULT; (0) PRAGMA temp_store
= FILE; (1) PRAGMA temp_store = MEMORY; (2)

查询或改变”temp_store”参数的安装。当temp_store设置为DEFAULT
(0),使用编译时的C预处理宏
TEMP_STORE来定义储存临时表和暂时索引的职务。当设置为MEMORY
(2)临时表和目录存放于内存中。 当设置为FILE
(1)则存放于文件中。temp_store_directorypragma
可用来指定存放该公文的目录。当改变temp_store设置,所有已存在的临时表,索引,触发器及视图将被立马删除。

网站地图xml地图