軟硬件環境
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
mongodb支持多大數據量?內存: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的建表語句:
mongodb性能優化?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,
mysql和mongodb選擇、`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優化、);
MongoDB類似,索引按照查詢語句的查詢字段創建,該例子中為ObjID和CreateTime兩個字段創建索引。
分別插入100萬條記錄,并對其做100個用戶并發查詢操作。
MySQL每一次都Drop表,MongoDB每一次都刪除data目錄。
查詢的時候,從第二次查詢開始,連續記錄三次。
結果
mongodb和mysql結合。插入時間
查詢時間
MySQL InnoDB引擎?無索引
10分33秒
39.516秒、35.907秒、39.907秒
MySQL InnoDB引擎?有索引
mysql和mongodb?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引擎?有索引
mongodb等數據庫比較,3分50秒
10.312秒、10.359秒、10.296秒
MongoDB無索引
37秒
59.531秒、60.063秒、59.891秒
MongoDB有索引
mongodb能代替mysql嗎。50秒
3.484秒、3.453秒、3.453秒
磁盤空間占用(有索引時候的占用,無索引情況差不多):
MySQL MyISAM:57MB
MySQL InnoDB:264MB
MongoDB:464MB
mongodb模糊查詢性能、另外測試中還發現一個有意思的現象,如果MongoDB查詢中,如果單獨查詢ObjID字段,耗時約1秒,如果單獨查詢CreateTime字段,耗時約10秒,如果兩個字段合起來查,就是上面的結果,約3秒,估計MongoDB內部對查詢順序作了優化吧。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态