• MySQL和MongoDB的性能测试


    软硬件环境

    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启动参数:binmysqld --no-defaults --console --character-set-server=utf8 --max_connections=1000 --max_user_connections=1000

    MongoDB启动参数:binmongod --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内部对查询顺序作了优化吧。

  • 相关阅读:
    上手 WebRTC DTLS 遇到很多 BUG?浅谈 DTLS Fragment
    亮相 LiveVideoStackCon,透析阿里云窄带高清的现在与未来
    会议更流畅,表情更生动!视频生成编码 VS 国际最新 VVC 标准
    如何用 Electron + WebRTC 开发一个跨平台的视频会议应用
    理论 + 标准 + 工程 —— 阿里云视频云编码优化的思考与发现
    遍历哈希表
    sql语句的循环执行
    一个aspx页面里所有的控件
    SELECT DISTINCT 语句
    100 The 3n + 1 problem
  • 原文地址:https://www.cnblogs.com/jthb/p/4048143.html
Copyright © 2020-2023  润新知