MongoDb에 대해 매우 기대하고 있으며 최근에 테스트하고 있습니다. 나는 'id'라는 필드에서만 인덱스 된 약 2 천만 개의 레코드를 가진 MySQL에서 게시물이라는 테이블을 가지고있었습니다.
MongoDB와 속도를 비교하고 싶었고 거대한 데이터베이스에서 임의로 15 개의 레코드를 가져 와서 인쇄하는 테스트를 실행했습니다. 나는 mysql과 MongoDB에 대해 각각 약 1,000 번 쿼리를 실행했으며 속도에 큰 차이가 없다는 것을 놀라게했다. 아마도 MongoDB가 1.1 배 빠릅니다. 매우 실망 스럽습니다. 내가 잘못하고있는 것이 있습니까? 내 테스트가 완벽하지는 않지만 집중적 인 집안일을 읽을 때 MongoDb와 동등한 MySQL이라는 것을 알고 있습니다.
노트 :
- 듀얼 코어 + (2 스레드) i7 CPU 및 4GB 램이 있습니다
- MySQL에는 각각 1 백만 개의 레코드가 20 개 있습니다.
MongoDB 테스트에 사용되는 샘플 코드
<?php
function 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 테스트를위한 샘플 코드
<?php
function 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;
}
?>