2012-03-19 89 views
1

因爲我不信任許多基準測試,因爲它們實際上並不像數據庫連接那樣處理I/O,只是向用戶發送「Hello World」並接收巨大的吞吐量。我目前沒有制定任何可擴展的計劃,但計劃儘快完成。我需要更好的結果,並儘可能確保它是現實的。如何正確比較NodeJS和PHP與MySQL查詢性能

我在兩個腳本中執行以下查詢:「SELECT * FROM table」,它返回200個查詢。抽樣結果是:

(兩個MySQL和的NodeJS安達的Apache服務器的每個測試之前重新啓動)

1000 requests, 100 concurrency: Apache: 564.20 req/s NodeJS: 102.61 req/s 
1000 requests, 200 concurrency: Apache: 393.75 req/s NodeJS: 105.12 req/s 
1000 requests, 400 concurrency: Apache: 42.75 req/s NodeJS: 105.07 req/s 
1000 requests, 1000 concurrency Apache: 16.5 req/s  NodeJS: 119.53 req/s 

不過,我不相信這些結果,因爲查詢始終是相同的這是不太可能在實時應用程序中。我怎樣才能自己測試兩套房?將SQL查詢更改爲隨機插入或隨機選擇會有幫助嗎?如果我不重啓服務器,PHP-MySQL情況下的某些緩存會有所幫助。

我曾經bencmark代碼: 的NodeJS:

var mysql = require("mysql"); 
var os = require('os'); 
var MySQLPool = require("mysql-pool").MySQLPool; 
var client = new MySQLPool({ 
    poolSize: 40, 
    user:  'root', 
    password: '123', 
    database: 'test' 
}); 

var express = require('express'), routes = require('./routes'); 
var app = module.exports = express.createServer(); 

app.get('/tables', function(req,res){ 
    client.query(
     'SELECT * FROM sample s', 
     function selectCb(err, results, fields) { 
     if (err) { 
      throw err; 
     } 
     res.send(results); 
     } 
    ); 
}); 

var cluster = require("cluster"); 
if (cluster.isMaster) { 
    for (var i = 0; i < os.cpus().length * 2; i++) { 
     var worker = cluster.fork(); 
    } 
} else { 
    app.listen(3000); 
} 

PHP

$host = "localhost"; 
$username = "root"; 
$password = "123"; 
$db_name = "test"; 

$db=mysql_connect($host, $username, $password) or die('Could not connect'); 
mysql_select_db($db_name, $db) or die('no db'); 
$sth = mysql_query("SELECT * FROM sample s"); 
$rows = array(); 
while($r = mysql_fetch_assoc($sth)) { 
    $rows[] = $r; 
} 
echo json_encode($rows); 
?> 

我知道有其他的方法,如Redis的和Memcached的以提高性能,但我我對原始MySQL性能感興趣。

回答

1

我建議在任何種類的選擇插入 - 前者不能被自然緩存,而後者需要額外的努力,以防止相同。

它也值得一個超簡單的SELECT查詢。將「phoneinfo」替換爲任何可用的表;

SELECT COUNT(anyFieldName)FROM phoneinfo WHERE 1 = -1;

如果您運行這兩種方法,並記錄來自100多個快速頁面加載的時間,那麼您應該更好地瞭解比較結果。