gpt4 book ai didi

php - 如何正确比较 NodeJS 和 PHP 与 MySQL 的查询性能

转载 作者:行者123 更新时间:2023-11-29 00:47:58 25 4
gpt4 key购买 nike

因为我不信任那里的许多基准测试,因为它们实际上并没有像数据库连接那样处理 I/O,只是向用户发送“Hello World”并获得巨大的吞吐量。我目前没有构建任何可扩展的东西,但计划很快做。我需要更好的结果,并确保它尽可能切合实际。

我在两个脚本中执行以下查询:“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 中的一些缓存会有所帮助。

我用来做基准测试的代码: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 性能很感兴趣。

最佳答案

我建议插入而不是任何类型的选择——前者本质上不能被缓存,而后者需要额外的努力来防止相同的情况。

还值得为 super 简单的 SELECT 查询计时。将“phoneinfo”替换为您可用的任何表格;

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

如果您同时运行这两个,并记录 100 多个快速页面加载的时间,那么您应该能更好地了解比较结果。

关于php - 如何正确比较 NodeJS 和 PHP 与 MySQL 的查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9771023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com