2009-06-05 26 views
4

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

答えて

1

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

詳細はhereを参照してください。

私が考えるほど、以来、5.1.6、あなたはまた、実行時にそれを行うことができます。

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

、とにかくそれをしようと、私はそれが現れ正確なバージョンをrememeberません。

+0

私はそれらにアクセスできないと思います。私はウェブサイトにcPanelバックエンド/設定管理システムを使用しています。 – john

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; 

} 

これは単なる大まかな考えです。しかし、あなたはそれを微調整することができます。

0

あなたは、ほとんどの場合ではないクエリのすべてを除外します10に設定するため、1にlong_query_time設定する必要があります - 助け

希望。 mysqlプロンプトで

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

関連する問題