当前位置:   article > 正文

mongodb性能 mysql_MySQL和MongoDB的性能测试

mangosbot mysql版本

软硬件环境

MySQL版本:5.1.50,驱动版本:5.1.6(最新的5.1.13有很多杂七杂八的问题)

MongoDB版本:1.6.2,驱动版本:2.1

操作系统:Windows XP SP3(这个影响应该不大)

CPU:Intel Core2 E6550 2.33G

内存:2G(足够了)

MySQL启动参数:bin\mysqld --no-defaults --console --character-set-server=utf8 --max_connections=1000 --max_user_connections=1000

MongoDB启动参数:bin\mongod --dbpath data\ --directoryperdb --rest --maxConns 1000 –quiet

除了加大最大连接数之外,均使用默认参数

测试

该测试主要为改进当前系统的日志的存储和查询性能提供参考,所以表的创建也以实际情况为例,下面是MySQL的建表语句:

CREATE TABLE `flt_evecurrent` (

`NodeID` int(11) NOT NULL DEFAULT '0',

`FltID` int(11) NOT NULL DEFAULT '0',

`ObjID` int(11) DEFAULT NULL,

`StationID` int(11) DEFAULT NULL,

`EveType` int(11) DEFAULT NULL,

`Severity` int(11) DEFAULT NULL,

`ReportTime` date DEFAULT NULL,

`CreateTime` date DEFAULT NULL,

`EveContent` varchar(1024) DEFAULT NULL,

`EveDesc` varchar(256) DEFAULT NULL,

PRIMARY KEY (`NodeID`,`FltID`)

);

MongoDB类似,索引按照查询语句的查询字段创建,该例子中为ObjID和CreateTime两个字段创建索引。

分别插入100万条记录,并对其做100个用户并发查询操作。

MySQL每一次都Drop表,MongoDB每一次都删除data目录。

查询的时候,从第二次查询开始,连续记录三次。

结果

插入时间

查询时间

MySQL InnoDB引擎 无索引

10分33秒

39.516秒、35.907秒、39.907秒

MySQL InnoDB引擎 有索引

11分16秒

非常不稳定:22.531秒、13.078秒、23.078秒、26.047秒、21.234秒、28.469秒、20.922秒、13.328秒

MySQL MyISAM引擎 无索引

3分21秒

22.812秒、23.343秒、23.125秒

MySQL MyISAM引擎 有索引

3分50秒

10.312秒、10.359秒、10.296秒

MongoDB无索引

37秒

59.531秒、60.063秒、59.891秒

MongoDB有索引

50秒

3.484秒、3.453秒、3.453秒

磁盘空间占用(有索引时候的占用,无索引情况差不多):

MySQL MyISAM:57MB

MySQL InnoDB:264MB

MongoDB:464MB

另外测试中还发现一个有意思的现象,如果MongoDB查询中,如果单独查询ObjID字段,耗时约1秒,如果单独查询CreateTime字段,耗时约10秒,如果两个字段合起来查,就是上面的结果,约3秒,估计MongoDB内部对查询顺序作了优化吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水vs人工智能/article/detail/734337?site
推荐阅读
相关标签
  

闽ICP备14008679号