有关SQLite数据库的一些实证数据,有一定历史比较和参考意义
2014-12-18 18:19
253 查看
转:http://blog.csdn.net/mynicedream/article/details/2252398
说明:以下这文章是2008年写的。也就是说,数据库的版本也基本是2008年左右的,现在已经过去N年了,数据库都发生了很多变化,性能也有很大提升。我用JULIA脚本insert220万条数据进入SQLite现在大约需要30秒,应有很大提升。大家可以比较。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
转文:
最近要做一个项目,需要用到实时数据库,PI太贵了,想找一个免费的,实在不行就只能自己编了。找了半天,找到了FastDB、BerkeleyDB和SQLite.
FastDB是内存型数据库,据说很快,但数据库大小不能大于物理内存,不然。。。反正我看到这就走了,我可是要一秒内处理几千个数据,还要保存8小时以上的啊!BerkeleyDB和SQLite倒没有数据库大小不能大于物理内存的限制,我对他们的性能进行了测试,结果如下:
*机器配置:Core2
E4500CPU、2G内存
上表为两种数据库只建一个索引,Berkeley DB不支持事务、Sqlite支持事务情况下的数据,如果Berkeley
DB打开事务支持,速度会下降很大的数量级,根本不能满足需求。另外在程序崩溃后Berkeley DB数据库不可用,Sqlite数据库仍可正常使用。
说明:以下这文章是2008年写的。也就是说,数据库的版本也基本是2008年左右的,现在已经过去N年了,数据库都发生了很多变化,性能也有很大提升。我用JULIA脚本insert220万条数据进入SQLite现在大约需要30秒,应有很大提升。大家可以比较。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
转文:
最近要做一个项目,需要用到实时数据库,PI太贵了,想找一个免费的,实在不行就只能自己编了。找了半天,找到了FastDB、BerkeleyDB和SQLite.
FastDB是内存型数据库,据说很快,但数据库大小不能大于物理内存,不然。。。反正我看到这就走了,我可是要一秒内处理几千个数据,还要保存8小时以上的啊!BerkeleyDB和SQLite倒没有数据库大小不能大于物理内存的限制,我对他们的性能进行了测试,结果如下:
[align=center] [/align] | [align=center]Berkeley DB[/align] | [align=center]Sqlite[/align] |
插入10000条记录耗时 | 0.08秒 | 0.42秒 |
插入100000条记录耗时 | 2.31秒 | 3.81秒 |
插入7200000条记录耗时 | 1024.34秒 | 249秒 |
插入57600000条记录耗时 | 12860.78秒 | 2155.14秒 |
插入172800000条记录耗时 | 48039.64秒 | 6352.06秒 |
10000条记录查1记录耗时 | 少于0.01秒 | 少于0.01秒 |
100000条记录查1记录耗时 | 少于0.01秒 | 少于0.01秒 |
7200000条记录查1记录耗时 | 少于0.01秒 | 少于0.01秒 |
57600000条记录查1记录耗时 | 0.03秒 | 0.16秒 |
172800000条记录查1记录耗时 | 0.03秒 | 0.09秒 |
10000条记录数据库大小 | 0.628M | 0.527M |
100000条记录数据库大小 | 5.29M | 5.32M |
7200000条记录数据库大小 | 516M | 405M |
57600000条记录数据库大小 | 3087.13M | 3925.8M |
172800000条记录数据库大小 | 11890.7M | 10621.2M |
E4500CPU、2G内存
上表为两种数据库只建一个索引,Berkeley DB不支持事务、Sqlite支持事务情况下的数据,如果Berkeley
DB打开事务支持,速度会下降很大的数量级,根本不能满足需求。另外在程序崩溃后Berkeley DB数据库不可用,Sqlite数据库仍可正常使用。
相关文章推荐
- Bloomberg Desktop Api 关于历史Tick数据的一些参考
- 一些PHP相关的数据比较
- 一些有关检查数据的JS代码
- 有关TI DSP的一些东西(整理一些网络资源及手册资料)--外设寄存器和CPU控制寄存器、数据类型、中断的使用
- IOS学习初期的一些学渣感受[参考意义在于学习的顺序过程]
- 一些有关检查数据的JS代码
- 一些有关检查数据的JS代码
- datalist 的用法。也是增删改查,但是比较智能。用数据绑定的方式,可以有不同的显示方法,下面是对一个表的增删改查的参考代码
- NSDate 的一些操作(比较、创建、在现有date加减一定时间等)
- 建站或者网站搬家换空间的时候,企业站长最关心的一个问题是该如何选择网站空间,而这一问题对于一些擅长的站长来说非常小意思,但对于部分企业站长来说是一个比较头疼的问题。根据不完整数据显示,很多企业站长因为
- C# 使用DateTimePicker与数据库中类型为datetime的数据作比较的一些注意事项
- google hack dat 又增加的一些比较新的数据
- 一些数据方法的参考
- 整理一些有关检查数据的JS代码
- NSDate 的一些操作(比较、创建、在现有date加减一定时间等)
- 比较购物类网站全分析(二):看看比较购物网站的一些数据
- Repeater1绑定数据,编辑数据的一些参考文章
- == 和 equal 的比较以及有关字符串创建的一些心得
- android.app.Activity阅读摘要,有时候会不会需要保持一些现场数据呢? 想让系统帮你退出到后台或者挂掉前做些前置保持工作吗,重点参考吧:
- Android有关JNI 学习(两)为JNI方法名称,数据类型和方法签名的一些知识