【发布时间】:2012-05-04 00:25:28
【问题描述】:
我正在尝试编写php benchmark 来比较一些 RDBMS、NewSQL 和 NoSQL。
该脚本只是执行查询并测量执行时间。
对于 mysql-like,我只是使用:
$start = microtime(true);
$result = mysql_query($SQL);
$end = microtime(true);
我没有为我的基准测试获取数据。
但是使用 mongodb-php,函数 find() 返回一个 cursor
$start = microtime(true);
$collection = $this->_db->selectCollection($collection);
$cursor = $collection->find($query);
$end = microtime(true);
$cursor 和 $result 是否等效(时间/数据成本)? 游标不加载数据,我必须迭代游标才能加载数据。这就是为什么要执行时间MySQL 和 mongoDB 之间的查询是如此不同或只是 mongoDB 岩石......
我想知道将我的代码更改为是否更公平:
$start = microtime(true);
$result = mysql_query($SQL);
while ($row = mysql_fetch_row($result)) {}
$end = microtime(true);
和
$start = microtime(true);
$cursor = $collection->find($query);
foreach ($cursor as $doc) {}
$end = microtime(true);
最后,是不是说每次迭代 mongodb 游标数据都是直接从 mongodb 服务器而不是从计算机内存中获取?
【问题讨论】:
标签: php mysql mongodb benchmarking nosql