Nov 3

MySQL v.s.  Berkeley DB 不指定

felix021 @ 2011-11-3 16:59 [IT » 数据库] 评论(0) , 引用(0) , 阅读(7203) | Via 本站原创 | |
这里委屈MySQL一下,只是想测试,如果二者用于比较纯粹的key/value存储,性能如何。

机器配置:RHEL5.6
AMD Opteron(tm) 6128HE  2GHz, 32G RAM,
HDD(应该不是SSD,7200还是10000rpm不知道)
连续读54.5 MB/s (dd if=/dev/zero of=test bs=1048576 count=512)

====
MySQL: 使用源码附带的的 my-medium.cnf 配置
CREATE TABLE nn (k INTEGER PRIMARY KEY, v INTEGER); #默认MyISAM引擎

100,000条数据
INSERT: 4k QPS, 24.45s  #类似于 INSERT INTO nn VALUES (42, 42)
UPDATE:  2.7k QPS, 36.00s #类似于 UPDATE nn SET v=43 WHERE k=42
SELECT(key随机): 3.3k QPS, 31.22s #类似于 SELECT * FROM nn WHERE k=42
空间占用:1.9M 其中数据879K,索引1004K

5,000,000 条数据 (不测试INSERT和UPDATE了……)
LOAD: 32.8万条/s, 15.25s # LOAD DATA INFILE '/tmp/data' INTO TABLE nn (k, v)
SELECT(10w次, key随机):  4k QPS, 25.49s
空间占用:92M 其中数据43M,索引49M

以上测试除了MySQL Load之外完全使用C代码调用MySQL的官方C API

====
Berkeley DB(BTree, 没测hash):
100w条插入:15.9s, 62.9k QPS
100w条查询(key随机):8.69s, 115k QPS
空间占用:100w=>25M, 1000w=>259M, 2亿=>5.4G

p.s. 如果把cache_size设置为512MB的话,插入基本都在内存中完成,100w跳只需要大约2.64s,378.6k QPS,和MySQL在同一个级别。

以上测试使用c编码完成,使用默认参数,没有设置内存占用大小。
Python使用bsddb模块效率约是c的50%。

转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: http://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]