我對MongoDb感到非常興奮,并且最近對其進行了測試。我在MySQL中有一個名為posts的表,其中大約2000萬條記錄僅在名為“ id”的字段上建立索引。我想將速度與MongoDB進行比較,然后運行了一個測試,該測試將從我們的大型數據庫中隨機獲取并打印15條記錄。我為mysql和MongoDB分別運行了約1,000次查詢,但我很驚訝我沒有注意到速度上的很大差異。也許MongoDB快1.1倍。真令人失望。我做錯什么了嗎?我知道我的測試并不完美,但是在閱讀繁瑣的雜物方面,MySQL與MongoDb相當。注意:我有雙核+(2個線程)i7 cpu和4GB ram我在MySQL上有20個分區(qū),每個分區(qū)有1百萬條記錄用于測試MongoDB的示例代碼<?phpfunction microtime_float(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);}$time_taken = 0;$tries = 100;// connect$time_start = microtime_float();for($i=1;$i<=$tries;$i++){ $m = new Mongo(); $db = $m->swalif; $cursor = $db->posts->find(array('id' => array('$in' => get_15_random_numbers()))); foreach ($cursor as $obj) { //echo $obj["thread_title"] . "<br><Br>"; }}$time_end = microtime_float();$time_taken = $time_taken + ($time_end - $time_start);echo $time_taken;function get_15_random_numbers(){ $numbers = array(); for($i=1;$i<=15;$i++) { $numbers[] = mt_rand(1, 20000000) ; } return $numbers;}?>測試MySQL的樣例代碼<?phpfunction microtime_float(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);}$BASE_PATH = "../src/";include_once($BASE_PATH . "classes/forumdb.php");$time_taken = 0;$tries = 100;$time_start = microtime_float();for($i=1;$i<=$tries;$i++){ $db = new AQLDatabase(); $sql = "select * from posts_really_big where id in (".implode(',',get_15_random_numbers()).")"; $result = $db->executeSQL($sql); while ($row = mysql_fetch_array($result) ) { //echo $row["thread_title"] . "<br><Br>"; }}$time_end = microtime_float();$time_taken = $time_taken + ($time_end - $time_start);echo $time_taken;function get_15_random_numbers(){ $numbers = array(); for($i=1;$i<=15;$i++) { $numbers[] = mt_rand(1, 20000000); } return $numbers;}?>
3 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
您是否有并發(fā)性,即同時使用用戶?如果僅使用一個線程直接運行1000次查詢,則幾乎沒有區(qū)別。這些引擎太簡單了:)
但我強烈建議您建立一個真正的負載測試會話,這意味著在同一時間使用具有10、20或50個用戶的注入器(例如JMeter),以便您能真正看到差異(嘗試將此代碼嵌入JMeter網頁中可以查詢)。
今天,我只是在一臺服務器(和一個簡單的集合/表)上完成此操作,結果非常有趣且令人驚訝(與MyISAM引擎和InnoDb引擎相比,MongoDb的讀寫速度確實更快)。
這確實應該是測試的一部分:并發(fā)和MySQL引擎。然后,數據/架構設計和應用程序需求當然是巨大的需求,而不是響應時間。讓我知道您獲得結果時,我也需要有關此的輸入!
添加回答
舉報
0/150
提交
取消