標籤:des io ar 使用 sp on 問題 cti ad
軟硬體環境
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內部對查詢順序作了最佳化吧。
MySQL和MongoDB的效能測試