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拥有处理大型数据的能力。

相关文章
相关标签/搜索