フロントエンドとしてphpMyAdminを備えたMySQLデータベースを使用しています(まだリモート/クライアントアクセスがあるかどうかわかりません)。データベースにクエリを実行するスクリプトがあり、各クエリにかかる時間を知りたいですか? これを行う最も簡単な方法は何ですか? サーバーに別の PHP アプリをインストールできますか?
3 に答える
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
、とにかく試してみてください。登場したときの正確なバージョンを覚えていません。
私が取り組んでいるほとんどのアプリケーションには、開発環境で簡単に有効にできるクエリ プロファイリング出力が含まれています。これにより、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;
}
それはちょっと大雑把な考えです。必要に応じて微調整できます。
それが役立つことを願っています-
long_query_time を 1 に設定する必要があります。これを 10 に設定すると、すべてではないにしてもほとんどのクエリが除外されるためです。mysqlプロンプトで次のように入力します
@@long_query_time=1 を設定します。