我们正在对许多服务器进行基准测试,以迁移我们当前的站点。
我们已经针对当前设置测试了 2 个配置,使用 mysqlslap 测试并在具有相同数据的表上运行 sql 查询并使用 php microtime 进行测量。mysqlslap 测试如下:
- 电流:4.977 秒
- 配置 1:2.988 秒
- 配置 2:1.786 秒
但是,我是否对微时间结果的结果感到困惑,因为当前服务器在除一项测试之外的所有测试中都是最快的。当前服务器在运行较小的查询时似乎更快,而在运行大型查询时则较慢。这是基准案例之一的示例(以防我做一些愚蠢的事情!):
$t1 = microtime(TRUE);
for($i=1; $i<10; $i++)
{
$sql = 'SELECT a.ref, a.code, a.expiry
FROM payment a
WHERE a.Amount >0
AND a.type = "card"
AND a.user_id = '.$i.'
AND a.result = "success"
AND a.amount > 0
AND a.code = (SELECT b.code
FROM payment b
WHERE b.user_id = a.user_id
AND b.type="Card"
AND b.amount > 0
ORDER BY date DESC LIMIT 1
)
ORDER BY a.date DESC LIMIT 1';
mysql_query($sql);
}
$t2 = microtime(TRUE);
$t = $t2-$t1;
echo $t.'s';
所以我有两个问题:
- 这些是预期的结果吗?当前服务器在微时间测试中名列前茅(较小的查询更快,较大的查询更慢)但在 mysqlslap 测试中垫底。
- 除了我们无法在当前服务器上安装的 (sysbench) - 您能否建议任何其他方法来对服务器进行基准测试?
更新:我已经通过 mysqlslap 运行了与微时间测试中使用的自定义查询相同的 sql 查询,现在新配置的速度要快得多。在运行微时间测试时,我们使用实时数据库来检查常见请求——结果可能已经在内存中了吗?