转:http://blog.csdn.net/mynicedream/article/details/2252398
说明:以下这文章是2008年写的。也就是说,数据库的版本也基本是2008年左右的,现在已经过去N年了,数据库都发生了很多变化,性能也有很大提升。我用JULIA脚本insert220万条数据进入sqlite现在大约需要30秒,应有很大提升。大家可以比较。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
转文:
最近要做一个项目,需要用到实时数据库,PI太贵了,想找一个免费的,实在不行就只能自己编了。找了半天,找到了FastDB、BerkeleyDB和sqlite.
FastDB是内存型数据库,据说很快,但数据库大小不能大于物理内存,不然。。。反正我看到这就走了,我可是要一秒内处理几千个数据,还要保存8小时以上的啊!BerkeleyDB和sqlite倒没有数据库大小不能大于物理内存的限制,我对他们的性能进行了测试,结果如下:
@H_403_19@
|
||
249秒
|
||
2155.14秒
|
||
6352.06秒
|
||
@H_403_19@0.628M
|
@H_403_19@0.527M
|
|
@H_403_19@5.29M
|
@H_403_19@5.32M
|
|
@H_403_19@516M
|
@H_403_19@405M
|
|
@H_403_19@3087.13M
|
@H_403_19@3925.8M
|
|
@H_403_19@11890.7M
|
@H_403_19@10621.2M
|
上表为两种数据库只建一个索引,Berkeley DB不支持事务、sqlite支持事务情况下的数据,如果Berkeley DB打开事务支持,速度会下降很大的数量级,根本不能满足需求。另外在程序崩溃后Berkeley DB数据库不可用,sqlite数据库仍可正常使用。