使用mysqlslap与实际sql查询的数据库性能

时间:2012-12-21 13:09:35

标签: php mysql performance benchmarking

我们正在对许多服务器进行基准测试,以便迁移我们当前的网站。

我们已经针对当前设置测试了两个配置,使用mysqlslap测试并在表上运行具有相同数据的sql查询并使用php microtime进行测量。 mysqlslap测试如下:

  • 当前:4.977秒
  • 配置1:2.988秒
  • 配置2:1.786秒

然而,我对microtime结果的结果感到困惑,因为除了其中一项测试外,当前服务器的速度最快。当前服务器在运行较小的查询时似乎更快,而对于大型查询则更慢。这是一个基准案例的例子(以防万一我做了些蠢事!):

$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';

所以我有两个问题:

  1. 这些是预期的结果吗?当前服务器在microtime测试中排名第一(对于较小的查询更快,对于更大的查询更慢)但在mysqlslap测试中是最低的。
  2. 除了我们无法在当前服务器上安装的(sysbench)之外 - 您能否建议使用其他方法对服务器进行基准测试?
  3. 更新:我通过mysqlslap运行与microtime测试中使用的相同的sql查询作为自定义查询,现在新配置的速度要快得多。在运行microtime测试时,我们使用实时数据库来检查常见请求 - 可能是结果已经在内存中了吗?

0 个答案:

没有答案