SQLite3性能优化.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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命令,并且不介意SQLite使用更多的内存的话,可以增大缓存以提高性能。 3.如何设置 PRAGMA cache_size = Number-ofs; 修改SQLite一次存储在内存中的数据库文件页数。 4.注意事项: 当使用cache_size pragma改变缓存大小时,改变仅对当前对话有效,当数据库关闭重新打开时缓存大小恢复到缺省大小。要想永久改变缓存大小,使用default_cache_size pragma. 5.建议: 修改为8000,也就是执行命令“PRAGMA cache_size =8000;”即可; 三.LIKE运算符 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依然为真。 1.注意事项: SQLite3.6.22版本不支持。 2.建议: 打开。也就是执行命令“PRAGMA case_sensitive_like = 1;”命令。不然搜索中文字串会出错。 四.LIKE运算符 PRAGMA count_changes; PRAGMA count_changes = 0 | 1; 查询或更改count-changes标记。 正常情况下INSERT, UPDATE和DELETE语句不返回数据。 当开启count-changes,以上语句返回一行含一个整数值的数据——该语句插入,修改或删除的行数。 1.注意事项: 返回的行数不包括由触发器产生的插入,修改或删除等改变的行数。 2.建议: 打开,便于调试。也就是执行“PRAGMA count_changes = 1;”该命令。 五.页面大小 PRAGMA page_size; PRAGMA page_size = bytes; 查询或设置size值。 1.注意事项: 只有在未创建数据库时才能设置size。页面大小必须是2的整数倍且大于等于512小于等于8192。 上限可以通过在编译时修改宏定义SQLITE_MAX_PAGE_SIZE的值来改变。上限的上限是32768。 六.磁盘同步 1.如何查询: PRAGMA synchronous; 指令含义:查询synchronous标记的设定,返回整数值; 2.如何设置: PRAGMA synchronous = FULL; (2) PRAGMA synchronous = NORMAL; (1) PRAGMA synchronous = OFF; (0) 3.参数含义: 当synchronous设置为FULL (2), SQLite数据库引擎在紧急时刻会暂停以确定数据已经写入磁盘。这使系统崩溃或电源出问题时能确保数据库在重起后不会损坏。FULL synchronous很安全但很慢。 当synchronous设置为NORMAL, SQLite数据库引擎在大部分

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档