Mysql与MongoDB对比测试

本文通过实际测试对比了MySQL和MongoDB在数据插入、查询、更新和删除等方面的性能差异,并得出MongoDB在数据插入和查询方面表现更优的结论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试环境:php5.2、mysql5.0、MongoDB2.0.6、xbug

测试脚本:

Mysql测试脚本:

[php] view plaincopyprint?

<?php  

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

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

if (!$con)  

  {  

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

  }  

mysql_select_db("my_test", $con);  

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

转载于:https://my.oschina.net/botkenni/blog/753353

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值