6

フロントエンドとしてphpMyAdminを備えたMySQLデータベースを使用しています(まだリモート/クライアントアクセスがあるかどうかわかりません)。データベースにクエリを実行するスクリプトがあり、各クエリにかかる時間を知りたいですか? これを行う最も簡単な方法は何ですか? サーバーに別の PHP アプリをインストールできますか?

4

3 に答える 3

2

MySQL設定ファイルにアクセスできる場合は、 と を有効general query logにできますslow query log

詳しくはこちらをご覧ください。

私が思うに、5.1.6実行時にも実行できます。

SET GLOBAL long_query_time = 10  /* which queries are considered long */
SET GLOBAL slow_query_log = 1

、とにかく試してみてください。登場したときの正確なバージョンを覚えていません。

于 2009-06-05T13:46:37.693 に答える
2

私が取り組んでいるほとんどのアプリケーションには、開発環境で簡単に有効にできるクエリ プロファイリング出力が含まれています。これにより、SQL、実行時間、スタック トレース、および Explain 出力を表示するためのリンクが出力されます。また、1 秒以上実行されているクエリも強調表示されます。

それほど洗練されたものは必要ないかもしれませんが、クエリの実行をラップする関数を PHP で記述し、デバッグ情報をセッションに保存する (または単に出力する) ことで、クエリの実行時間をかなりよく理解できます。例えば:

function run_query($sql, $debug=false, $output=false) {
    $start = microtime(true);
    $q = mysql_query($sql);
    $time = microtime(true) - $start;

    if($debug) {
        $debug = "$sql<br/>$time<br/><br/>";
        if($output) {
            print $debug;
        } else {
            $_SESSION['sql_debug'] .= $debug;
        }
    }

    return $q;

 }

それはちょっと大雑把な考えです。必要に応じて微調整できます。

それが役立つことを願っています-

于 2009-06-05T14:05:32.100 に答える
1

long_query_time を 1 に設定する必要があります。これを 10 に設定すると、すべてではないにしてもほとんどのクエリが除外されるためです。mysqlプロンプトで次のように入力します

@@long_query_time=1 を設定します。

于 2009-07-30T15:51:34.083 に答える