转载自:http://blog.youkuaiyun.com/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
|
* 机器配置: Core2 E4500CPU 、 2G 内存
上表为两种数据库只建一个索引, Berkeley DB 不支持事务、 Sqlite 支持事务情况下的数据,如果 Berkeley DB 打开事务支持,速度会下降很大的数量级,根本不能满足需求。另外在程序崩溃后 Berkeley DB 数据库不可用, Sqlite 数据库仍可正常使用。