如何提升SQLite的性能

  SQLite是一款轻量级的数据库,不需要任何的安装就可以使用,并且还是开源的,这作为开发者的我们无疑是一个天大的福音。

  但是在使用SQLite过程中,或许你会因为那奇慢无比的性能头疼不已,因为修改的性能是那么的低下。出现性能低下的情况是因为对SQLite的功能了解得不够,SQLite里有很多默认的设置导致了性能的降低。下面我将揭开提高SQLite性能的神秘面纱

  1、  增大Cache值,在服务器允许的情况下,尽量增大Cache的值;

  例如:PRAGMA cache_size = 256 * 1024; (SQLite默认页大小为1KB,cache_size如果为正数,则表示cache设置为多少页,如果为负数则表示设置为多少KB)

  2、  手动事务,SQLite默认情况下为每一句SQL语句均自动加上事务,如果不手动调整事务,SQLite的效率很低;

  开始事务:begin transaction(begin)

  提交事务:commit transaction(end)

  回滚事务:rollback transaction(rollback)

  3、  设置Journal日志模式,最新版本的SQLite日志模式默认为TRUNCATE,除了修改外,其他性能均比较可观,如果修改比较多的话,建议使用PERSIST日志模式。当然,条件允许使用MEMORY更好。在使用其他日志模式的之前,需考虑意外断开数据库连接的情况。

  例如:PRAGMA journal_mode = memory; (设置日志模式为内存模式)

  4、  对于频繁使用的操作,可以采用一次Prepare,在SQLite中,Prepare是需要耗一些资源的,并且这些资源累积起来对于系统也是一笔不小的开销。在设计允许的情况下,建议多使用一次Prepare这种模式。

  注意事项:在每次的bind之前,需要reset sqlite3_stmt对象

  5、  如果使用一次性数据库,可以使用内存数据库”:memory:”,记住,字母必须全为小写。

时间: 2024-10-16 23:15:28

如何提升SQLite的性能的相关文章

使用事务提升sqlite insert的性能

昨天发现sqlite插入性能很低,搜索了一下发现,其实sqlite的插入可以做到每秒50000条,但是处理事务的速度慢: (19) INSERT is really slow - I can only do few dozen INSERTs per second Actually, SQLite will easily do 50,000 or more INSERT statements per second on an average desktop computer. But it wi

jQuery 做好七件事帮你提升jQuery的性能

1. Append Outside of Loops 凡是触及到DOM都是有代价的.如果你向DOM当中附加大量的元素,你会想一次性将它们全部附加进来,而不是分多次进行.当在循环当中附加元素就会产生一个常见的问题. 1 $.each( myArray, function( i, item ) { 2 3 var newListItem = "<li>" + item + "</li>"; 4 5 $( "#ballers"

采用表达式树提升属性访问性能

项目背景, 采用贫血模式, 但希望在使用业务实体机业务规则上的数据属性,使用同一规则. 比如:在页面中, “RS_Department.Code" , "Department.Code"都可以正常访问. 业务实体类 直接使用Linq to Sql 自动生成的代码,跟数据库表一一对应. 如:RS_Requisition, RS_Department 业务规则类 实现数据库增删改查,扩展属性,其他业务规则等. public class Requisition : BLLTable

psutil 是因为该包能提升 memory_profiler 的性能

python 性能分析入门指南 一点号数据玩家昨天 限时干货下载:添加微信公众号"数据玩家「fbigdata」" 回复[7]免费获取[完整数据分析资料!(包括SPSS.SAS.SQL.EXCEL.Project)!] 英文:yexiaobai 译文:yexiaobai 虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题. 用 time 粗粒度的计算时间 $time pythonyou

如何从请求、传输、渲染3个方面提升Web前端性能

什么是WEB前端呢?就是用户电脑的浏览器所做的一切事情.我们来看看用户访问网站,浏览器都做了哪些事情: 输入网址 –> 解析域名 -> 请求页面 -> 解析页面并发送页面中的资源请求 -> 渲染资源 -> 输出页面 -> 监听用户操作 -> 重新渲染. 通过上面的路径可以看出浏览器分为请求.传输.渲染三部分来实现用户的访问,本文就从这三个部分来浅析如何提升WEB前端性能. 请求浏览器为了减少请求传输,实现了自己的缓存机制.浏览器缓存就是把一个已经请求过的Web资源

【转帖】AMD Zen 3处理器IPC性能提升17% 浮点性能大涨50%

AMD Zen 3处理器IPC性能提升17% 浮点性能大涨50% https://www.cnbeta.com/articles/tech/925543.htm AMD YES 下个月初发布7nm锐龙APU及移动版锐龙4000之后,AMD在7nm Zen2架构上就算是功德圆满了,剩下的就要全力以赴2020年要发布的7nm Zen3处理器了.最新消息对Zen3的性能提升非常乐观,认为浮点性能大涨50%,推动平均IPC性能提升17%,远超之前的预期. 访问购买页面: AMD旗舰店 目前我们能知道的就

Android中数据库Sqlite的性能优化

1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括对单表查询.连表查询.分组查询.排序查询.经常是一到两个数量级的性能提升,且随着数据数量级增长. (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加.在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响. (3). 分类a. 直接创建索引和间接创建索引直

提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析

webview加载时有5个事件.触发顺序为loading.titleUpdate.rendering.rendered.loaded.webview开始载入页面时触发loading,载入过程中如果<title>节点已经解析并赋予新值,触发titleUpdate,页面开始渲染,触发rendering,页面渲染完毕,触发rendered,页面载入完毕触发loaded. loaded常用于判断页面是否载入完毕,载入完毕才显示新页面.但有时页面内容很长时,全部载入完毕比较慢,导致显示新窗体比较慢.为了

提升HTML5的性能体验系列之三 流畅下拉刷新和上拉

下拉刷新 为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机(Android4.4以下)上,DIV动画经常出现卡顿现象(特别是图文列表的情况).解决方案还是webview. 既然拉div卡,那就不拉div,改拉webview.webview的拉动是原生的,回弹效果也是原生的,体验与原生一致.思路是在父页面写titlebar,titlebar下面10像素左右写一个"下拉可刷新".然后append一个子webview,并设置为可下拉.那么在把子webv