2

現在のサイトを移行する目的で、多数のサーバーのベンチマークを行っています。

mysqlslap テストを使用し、テーブルで同じデータを使用して SQL クエリを実行し、php マイクロタイムを使用して測定することにより、現在のセットアップに対して 2 つの構成をテストしました。mysqlslap テストは次のとおりです。

  • 現在: 4.977 秒
  • 構成 1: 2.988 秒
  • 構成 2: 1.786 秒

ただし、現在のサーバーは 1 つを除くすべてのテストで最速であるため、マイクロタイムの結果の結果に困惑しています。現在のサーバーは、小さなクエリを実行すると高速になり、大きなクエリを実行すると遅くなります。これは、ベンチマーク ケースの 1 つの例です (私が何かばかげたことをしている場合に備えて!):

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

だから私は2つの質問があります:

  1. これらは期待される結果ですか?現在のサーバーは、マイクロタイム テストでトップ (クエリが小さいほど速く、クエリが大きいほど遅い) ですが、mysqlslap テストでは最下位です。
  2. 現在のサーバーにインストールできない (sysbench) 以外に、サーバーをベンチマークする他の方法を提案できますか?

更新: マイクロタイム テストで使用したものと同じ SQL クエリを mysqlslap を介してカスタム クエリとして実行したところ、新しい構成は全体的にはるかに高速になりました。マイクロタイム テストを実行するとき、ライブ データベースを使用して一般的なリクエストをチェックしていました。結果が既にメモリにある可能性はありますか?

4

0 に答える 0