引自http://blog.csdn.net/mynicedream/archive/2008/04/04/2252398.aspx
最近要做一个项目,需要用到实时数据库,PI太贵了,想找一个免费的,实在不行就只能自己编了。找了半天,找到了FastDB、BerkeleyDB和sqlite.
FastDB是内存型数据库,据说很快,但数据库大小不能大于物理内存,不然。。。反正我看到这就走了,我可是要一秒内处理几千个数据,还要保存8小时以上的啊!BerkeleyDB和sqlite倒没有数据库大小不能大于物理内存的限制,我对他们的性能进行了测试,结果如下:
|
Berkeley DB
|
sqlite
|
插入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
|
上表为两种数据库只建一个索引,Berkeley DB不支持事务、sqlite支持事务情况下的数据,如果Berkeley DB打开事务支持,速度会下降很大的数量级,根本不能满足需求。另外在程序崩溃后Berkeley DB数据库不可用,sqlite数据库仍可正常使用。