标题:MySQL v.s.  Berkeley DB 出处:Felix021 时间:Thu, 03 Nov 2011 16:59:39 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2047 内容: 这里委屈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%。 Generated by Bo-blog 2.1.0