2009-06-05 94 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 2009-06-05 13:53:04

1

對於我所處理的大多數應用程序,我都包含可以在開發環境中輕鬆開啓的查詢分析輸出。這會輸出SQL,執行時間,堆棧跟蹤和顯示解釋輸出的鏈接。它還突出顯示查詢運行時間超過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

你應該long_query_time時間設置爲1,因爲它設置爲10會排除大多數,如果不是所有的查詢。 在mysql提示符下輸入

set @@ long_query_time = 1;