Mysql与MongoDB对比测试

13 篇文章 0 订阅
测试环境:php5.2、mysql5.0、MongoDB2.0.6、xbug

测试脚本:

Mysql测试脚本:
<?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
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拥有处理大型数据的能力。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e421083458

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值