मैं MongoDb के बारे में बहुत उत्साहित हूं और हाल ही में इसका परीक्षण कर रहा हूं। मेरे पास MySQL में एक टेबल थी जिसे लगभग 20 मिलियन रिकॉर्ड्स के साथ पोस्ट किया गया था जिसे केवल 'id' नामक फ़ील्ड पर अनुक्रमित किया गया था।
मैं MongoDB के साथ गति की तुलना करना चाहता था और मैंने एक परीक्षण चलाया जो हमारे विशाल डेटाबेस से यादृच्छिक रूप से 15 रिकॉर्ड प्राप्त करेगा और प्रिंट करेगा। मैंने mysql और MongoDB के लिए प्रत्येक के बारे में 1,000 बार क्वेरी चलाई और मुझे आश्चर्य हुआ कि मुझे गति में बहुत अंतर नहीं दिखता है। शायद MongoDB 1.1 गुना तेज है। यह बहुत निराशाजनक है। क्या कुछ है जो मैं गलत कर रहा हूँ? मुझे पता है कि मेरे परीक्षण सही नहीं हैं, लेकिन जब यह गहन कार्य पढ़ने के लिए आता है, तो यह MongoDb के बराबर है।
ध्यान दें:
- मेरे पास दोहरे कोर + (2 धागे) i7 सीपीयू और 4 जीबी रैम हैं
- मेरे 1 मिलियन रिकॉर्ड्स में से MySQL पर 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;
}
?>