每天4亿行SQLite订单大数据测试(源码)

简介:

SQLite单表4亿订单,大数据测试

SQLite作为嵌入式数据库的翘楚,广受欢迎!
新生命团队自2010年以来,投入大量精力对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,362058毫秒,约6分钟,超级慢

SQLite在云端

http://bigdata.newlifex.com/Admin admin/admin

  • 租用阿里云最低配置ECS,单核1G,1M带宽,每年300块,每天九毛钱
  • 部署BigData项目到ECS,访问正常

源码及数据库

大数据源码 http://git.newlifex.com/Stone/BigData
大数据镜像 https://github.com/nnhy/BigData
4亿订单数据 http://pan.baidu.com/s/1skZJ2ih
2亿订单数据 http://pan.baidu.com/s/1bo9NFFx
数据库下载后,解压缩得到Data.db,拷贝到Web并排的Data里面,Data里面还有一个Membership.db

 

C#/.Net大数据讨论群:1600800

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
分类: XCode, 大数据

本文转自大石头博客园博客,原文链接:http://www.cnblogs.com/nnhy/p/BigData.html,如需转载请自行联系原作者
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
5月前
|
PHP 数据库
fastadmin框架如何查询数据表指定时间段内的数据
fastadmin框架如何查询数据表指定时间段内的数据
99 0
|
4月前
|
NoSQL easyexcel Java
easyexcel导入导出百万条数据思路分析
easyexcel导入导出百万条数据思路分析
90 0
|
5月前
|
关系型数据库 MySQL 数据库连接
一次性导入千万级数据到Mysql(附源码)
一次性导入千万级数据到Mysql(附源码)
127 0
|
6月前
|
存储 关系型数据库 MySQL
30分布式电商项目 - 一亿条数据插入MySQL,耗时多少?
30分布式电商项目 - 一亿条数据插入MySQL,耗时多少?
57 0
|
9月前
|
SQL 算法 Cloud Native
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时
118 0
|
9月前
|
存储 数据库
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时(二)
【数据库评测】揭秘 Cloudwave 4.0 版本多表联合join零耗时(二)
60 0
【SQL开发实战技巧】系列(七):从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起
本篇文章讲解的主要内容是:***如果有重复数据如何检查出两个表中的差异数据及对应条数、表连接做聚合容易出现重复计算的错误、多表查询空值处理问题、NOT IN的子查询范围不能是空值,否则查询结果为空。***
【SQL开发实战技巧】系列(七):从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起
|
SQL 大数据 开发者
电商项目之 DWD 用户产品查询表 SQL 分析|学习笔记
快速学习电商项目之 DWD 用户产品查询表 SQL 分析
99 0
|
SQL 关系型数据库 MySQL
给你 2 万条数据,怎么快速导入到 MySQL?写得太好了...
给你 2 万条数据,怎么快速导入到 MySQL?写得太好了...
117 0