SQLite极致性能提升方法[转载]
SQLite极致性能提升方法:
关闭同步,Synchronous=Off,提升性能。添删改操作时不必同步等待写入磁盘,操作系统会延迟若干毫秒批量写入
设置WAL模式,Journal Mode=WAL,减少锁定。写入向前日志模式,避免多线程访问时锁定数据库,写入时不必使用排它锁影响其它线程读取,而是把事务操作写入到WAL文件中,延迟合并
加大缓存,Cache Size=5000,提升性能。操作系统通过文件映射MapFile把整个数据库文件映射进入内存,实际查询时会把用到数据所在附近页预先加载进入缓存,极大提升查询性能
插入速度 5000~16000tps,依赖CPU,HDD/SSD差别不大,主要受限于SQLite.Data.dll的Prepare
查询速度 非首次查询,缓存命中以后,索引查询基本上都是毫秒级。数据库较大则相应加大缓存,速度不变。
查记录数 单表数据超过一千万行以后,尽量不要使用Select Count,否则可能需要十几秒到半分钟的样子才能返回。NewLife.XCode封装了'Meta.Count'
当然,SQLite不适合多线程高并发写入,多线程高并发读取倒是非常不错。
因为数据库就在进程内,高并发读取一般比其它RDS要快一大截。
总的来说,SQLite数据库甭管多少数据多大库文件,只要配置得当,内存管够,性能不是太大问题!
SQLite大数据测试
为了验证SQLite的性能巅峰,我们来做一个大数据测试。
模拟每天4亿票销售订单,分表分库,每天一个数据库文件,有订单号、部门节点、时间等。
1, Test项目生成4亿行订单数据,主键自增ID,订单号建立索引,文件大小26.5G
2, Web项目,魔方+XCode,首次查询较慢,约427毫秒,需要预热
不同机器的首次查询时间偏差比较大,最大可能达到几秒钟
本机第一次启动该项目时,魔方需要从公网下载SQLite驱动文件以及样式资源文件
3, 第二页,99毫秒,操作系统文件映射缓存生效
4, 第20000页,147毫秒,系统缓存依然生效
5, 第200000页,32021毫秒,距离太远,文件系统缓存没有命中
6, 第200001页,867毫秒,缓存命中
7, 查询一个中间订单号000199999980,20毫秒,索引命中
显然,只要有索引,多大数据都不怕。
8, 本地内存占用150M。虽然整个数据库26.5G,但操作系统只会加载需要部分
对于重要程度不是特别高的场合,可以大量使用SQLite库保存历史数据,平时用不到的时候只占硬盘,不占内存
9, 记录数Select Count(select count(*)from xxx),362058毫秒,约6分钟,超级慢,这建议进行这种操作。
SQLite极致性能提升方法[转载]相关推荐
- 目标检测中的性能提升方法综述
文章目录 一.多尺度检测 1.什么是多尺度检测? 2.降低下采样率与空洞卷积 3.多尺度训练 4.优化Anchor尺寸训练 5.深层与浅层特征融合 6.SNIP,尺度归一化 7.TridentNet, ...
- linux性能提升方法(整理)
1.通过 ulimit 改善系统性能: 如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段.ulimit 是 ...
- SQLite性能提升10倍的Web数据库
作者 | James Long 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 最近我开发了一款名为absurd-sql的SQLite后端.在这款工具的帮助下,你无需将整个数据库加载到内 ...
- 性能之巅:常用性能分析方法
目录 为了便于总结,这些方法已经被归类成了不同的类型 1.街灯讹方法 2.随机变动讹方法 3.责怪他人讹方法 4.AdHoc核对清单法 5.问题陈述法 6.科学法 7.诊断循环 8.工具法 9.USE ...
- Web 应用性能提升 10 倍的 10 个建议
Web 应用性能提升 10 倍的 10 个建议 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计信息). 我们现在所 ...
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
- 莱斯大学找到了多被提升3G/4G网络性能的方法
为什么80%的码农都做不了架构师?>>> Rice University has figured out how to double capacity on 3G/4G networ ...
- 8种提升ASP.NET Web API性能的方法
英文原文:8 ways to improve ASP.NET Web API performance ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没 ...
- ASP.NET Web API 提升性能的方法实践
ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能. 在本文中,我将介绍8项提高 ASP.NET Web ...
最新文章
- Innosetup(pascal)标签控件label换行
- 你的 APP 为何启动那么慢?
- C语言math.h中的常用函数实例详解
- 这八大互联网金融商业模式,你都知道吗?
- ORACLE 绑定变量用法总结
- python定时任务apschedule_APScheduler(python 定时任务框架)最简单使用教程
- matlab中函数或变量无法识别怎么办_用MATLAB巧解微分方程实例分析
- laravel 模块化管理 插件 caffeinated
- 查询网站web服务器,web服务器地址查询
- 存储函数与存储过程的区别
- HTML静态网页设计
- 【网站介绍】有意思的网站(备忘)
- IDEA中好用的功能(不断更新中)
- php 怎么打出来的,word书名号怎么打出来
- opengl fbo 纹理 开发步骤
- 创建网页文件html,HTML快速入门之创建网页文件
- 华为电脑浏览器主页被劫持
- DEM分辨率与比例尺
- Windows批处理(cmd/bat)常用命令教程
- 网络知识点之-APR协议