比较 Mongodb 和 Mysql 查询性能

鉴客 发布于 2010/05/19 14:36
阅读 5K+
收藏 0

最近想用 Mongodb 做些存储层的事情。目前主要用在 id 查询或 ids 查询(如 mysql 的 in 查询)。新的方案能否上线还要看性能。现在把 mongodb 与 mysql 来对比下。

环境:同一台机器,装有 mongodb 1.4, mysql;内存 4g;两个数据库都只有 id 的唯一搜索;数据量 120w 左右,5w 个查询。对它们进行 id 或 ids 查询。

  mongodb mysql
total time avg time/per query total time avg time/per query
1 id/per query 11954ms, 00:11,954 0ms, 00,0 78613ms, 00:1:18,613 1ms, 00,1
10 id/per query 35885ms, 00:35,885 0ms, 00,0 107274ms, 00:1:47,274 2ms, 00,2
20 id/per query 63714ms, 00:1:3,714 1ms, 00,1 186398ms, 00:3:6,398 3ms, 00,3
5 thread, 20 id/per query - 5ms, 00,5 - 11ms, 00,11
10 thread, 20 id/per query - 10ms, 00,10 - 22ms, 00,22

 

从上表看:

每次查一个 id 的查询,在基本相同条件下 mongodb 速度是 mysql 的 7 倍。

每次查多个 id (10/20)的查询,mongodb 比 mysql 快 2 倍。

多线程下查多个 id,mongodb 比 mysql 快 1 倍。

从上面的测试来看:主要用在 id 查询或 ids 查询的应用中 mongodb 要优越 mysql。

在插入这些数据的时候,mongodb 更加快于 mysql,插入120w 到 mongodb 用 83159ms, ->00:1:23,159 就够了。mysql 有几十分钟。

当我在实际应用中(kw 级数据量),使用 mongodb 速度没有 mysql 好。原因可能有,mysql 的机器好,mongodb 使用不够得当。继续调整和优化程序吧……

附 mongodb 的 in 查询:

  1. BasicDBObject q = new BasicDBObject();  
  2. BasicDBObject in = new BasicDBObject();  
  3.   
  4. void createQ(Integer[] ids) {  
  5.     q.put("id", in);  
  6.     in.put("$in", ids);  

原文出处:http://blog.chenlb.com/2010/05/mongodb-vs-mysql-query-performance.html

加载中
0
BossKiller
BossKiller

很羡慕楼上,我已经基本固定在MySQL上开发了,没有创新了。

0
sklinux
sklinux

为什么你的mysql那么慢?插入120w mysql 有几十分钟

0
JavaGG
JavaGG

对呀,,mysql插入120w也不用几十分钟吧

是不是用了innodb,auto commit又没有设对

0
liueric
liueric

两个数据库有可比性~~~~一个是关系型数据库,一个是key-value数据库

0
Haimei
Haimei

120w mysql有几十分钟?楼主没有做索引之类的优化吧。

我觉得两种东西各有优劣,需要自己在不同的场景中应用了合适的那一个才对吧。

返回顶部
顶部