Mysql與MongoDB對比測試

測試環境:php5.二、mysql5.0、MongoDB2.0.六、xbug

測試腳本:

Mysql測試腳本:php

[php] view plaincopyprint?html

<?php  mysql

header("Content-Type:text/html;charset=utf-8");  sql

$con = mysql_connect("localhost","root","123456");  mongodb

if (!$con)  數據庫

  {  性能

  die('Could not connect: ' . mysql_error());  測試

  }  fetch

mysql_select_db("my_test", $con);  spa

mysql_query("set names utf8");  

$time1 = xdebug_time_index();  

  

//測試單條插入  

for($i=1;$i<2;$i++){  

mysql_query('INSERT INTO `members_copy`(`uname`,`name`,`password`,`email`) VALUES("chuchuchu_'$i.'","褚褚褚","e10adc3949ba59abbe56e057f20f883e","dhaig@yahoo.com.cn")');  

}  

  

//測試單條查詢  

$result = mysql_query("select * from members_copy where id=1");  

//while($row = mysql_fetch_row($result)){  

//  print_r($row);  

//}  

  

//測試更新  

mysql_query("UPDATE `members` SET `uname`='chuchuchu_1',`name`=' 褚褚褚',`password`='e10adc3949ba59abbe56e057f20f883e',`email`='dhaig@yahoo.com.cn' WHERE `id`='1'");  

 

 

//測試刪除  

mysql_query("DELETE FROM `members` WHERE `id`='1';");  

  

//測試100萬條數據插入  

for($i=1;$i<1000000;$i++){  

mysql_query('INSERT INTO `members`(`uname`,`name`,`password`,`email`) VALUES("chuchuchu_'.$i.'",褚褚褚","e10adc3949ba59abbe56e057f20f883e","dhaig@yahoo.com.cn")');  

}  

  

//測試100萬數據之單條插入  

mysql_query('INSERT INTO `members`(`uname`,`name`,`password`,`email`) VALUES("chuchuchu_0"," 褚褚褚","e10adc3949ba59abbe56e057f20f883e","dhaig@yahoo.com.cn")');  

  

//測試100萬數據之單條查詢  

$result = mysql_query("select * from members limit 0");  

while($row = mysql_fetch_row($result)){  

    print_r($row);  

}  

  

//測試100萬數據之單條更新  

mysql_query("UPDATE `members` SET `uname`='chuchuchu_1',`name`=' 褚褚褚',`password`='e10adc3949ba59abbe56e057f20f883e',`email`='dhaig@yahoo.com.cn' WHERE `id`='1'");  

  

//測試100萬數據之單條刪除  

mysql_query("DELETE FROM `members` WHERE `id`='1';");  

mysql_close($con);  

$time2 = xdebug_time_index();  

echo "Mysql    響應時間爲:".($time2-$time1)."秒";  

? >

MongoDB測試腳本:

[php] view plaincopyprint?

<?php  

header("Content-Type:text/html;charset=utf-8");  

//MongoDB有用戶名密碼並指定數據庫admin  

$conn = new Mongo("mongodb://root:123456@127.0.0.1:27017/admin");  

  

$db = $conn->admin;  

//定製結果集(表名things)  

$collection = $db->members;  

$time1 = xdebug_time_index();  

  

//測試單條插入  

for($i=1;$i<2;$i++){  

$user = array('uname' => 'chuchuchu_'.$i, 'name' => '褚褚褚', 'password' => 'e10adc3949ba59abbe56e057f20f883e', 'email' => 'dhaig@yahoo.com.cn');      

$collection->insert($user);  

}  

  

//測試單條查詢  

$cursor = $collection->find()->limit(1);  

//while($cursor->hasNext())  

//{  

//  var_dump($cursor->getNext());  

//}   

  

//測試更新  

$newdata = array('$set' => array("email" => "test@test.com"));  

$collection->update(array("uname" => "chuchuchu_1"), $newdata);  

  

//測試刪除  

$collection->remove(array('email'=>'dhaig@yahoo.com.cn'), array("justOne" => true));  

  

//測試100萬條數據插入  

for($i=1;$i<1000000;$i++){  

$user = array('uname' => 'chuchuchu_'.$i, 'name' => '褚褚褚', 'password' => 'e10adc3949ba59abbe56e057f20f883e', 'email' => 'dhaig@yahoo.com.cn');      

$collection->insert($user);  

}  

 

//測試100萬數據之單條插入  

$user = array('uname' => 'chuchuchu_0', 'name' => '褚褚褚', 'password' => 'e10adc3949ba59abbe56e057f20f883e', 'email' => 'dhaig@yahoo.com.cn');      

$collection->insert($user);  

 

//測試100萬數據之單條查詢  

$user = $collection->findOne(array('uname' => 'chuchuchu_0'));  

var_dump($user);  

 

//測試100萬數據之單條更新  

$newdata = array('$set' => array("email" => "test@test.com"));      

$collection->update(array("uname" => "chuchuchu_0"), $newdata);  

var_dump($user);  

 

//測試100萬數據之單條刪除  

$collection->remove(array('uname'=>'chuchuchu_0'), array("justOne" => true));  

$conn->close();  

$time2 = xdebug_time_index();  

echo "MongoDB響應時間爲:".($time2-$time1)."秒";  

?>


本測試原則:若是比較結果相近,則擴大數量級。如比較結差距大,則採用最小數量級。
 

1.測試插入:

單條數據操做
時間:
Mysql    響應時間爲:0.00045895576477051秒
MongoDB響應時間爲:0.00031495094299316秒

100條數據操做
Mysql    響應時間爲:0.014914989471436秒
MongoDB響應時間爲:0.010399103164673秒

1000條數據操做
Mysql    響應時間爲:0.17900490760803秒
MongoDB響應時間爲:0.096189975738525秒

100萬條數據操做Mysql    響應時間爲:168.32936501503秒
MongoDB響應時間爲:87.314424991608秒

測試100萬數據以後單條插入:
Mysql    響應時間爲:0.00042891502380371秒
MongoDB響應時間爲:0.00025105476379395秒

分析:
在查詢方面數量級越大相應時間差距越大。100萬數據測試中mongo要比mysql至少快2倍。MongoDB要比Mysql有優點。
 

2.測試查詢:


單條數據操做
時間:
Mysql    響應時間爲:0.00082182884216309秒
MongoDB響應時間爲:0.00055313110351562秒

100條數據操做
Mysql    響應時間爲:0.00066590309143066秒
MongoDB響應時間爲:0.00087094306945801秒

1000條數據操做
Mysql    響應時間爲:0.002295970916748秒
MongoDB響應時間爲:0.00048995018005371秒

測試100萬數據以後單條查詢:
Mysql    響應時間爲:0.0011050701141357秒
MongoDB響應時間爲:0.00045204162597656秒

分析:
在測試中咱們發現,當100條之內查詢時mysql優於mongodb可是當操做數據100萬後mongodb要比mysql快至少3倍。
 

3.測試更新:


測試100萬數據以前操做:
Mysql    響應時間爲:0.00034689903259277秒MongoDB響應時間爲:0.00021195411682129秒

測試100萬數據以後操做:
Mysql    響應時間爲:0.00043201446533203秒
MongoDB響應時間爲:0.0011470317840576秒

分析:
100萬數據以後,Mysql在更新方面要比MongoDB的速度快3倍。
 

4.測試刪除:


單條刪除操做:
Mysql    響應時間爲:0.00081205368041992秒MongoDB響應時間爲:0.00023102760314941秒

多條刪除操做:Mysql    響應時間爲:0.00092816352844238秒
MongoDB響應時間爲:0.0092201232910156秒

測試100萬數據以後單條刪除操做:
Mysql    響應時間爲:0.00066685676574707秒
MongoDB響應時間爲:0.0011069774627686秒

分析:
100萬數據以後,Mysql在更新方面要比MongoDB的速度快2倍。

總結:MongoDB在數據插入及查詢上性能表現優異,MongoDB擁有處理大型數據的能力。

相關文章
相關標籤/搜索