2012-02-22 12 views
12

मैं mysql कमांड के साथ एक लिनक्स होस्ट पर काम कर रहा हूं। मेरे पास एक स्क्रिप्ट है जो बैच mysql कमांड चलाती है (जैसे mysql -e "select...") और मैं प्रत्येक आदेश के निष्पादन समय को सारांशित करना चाहता हूं।mysql कमांड लाइन वापसी निष्पादन समय?

क्या कमांड लाइन से mysql exec time प्राप्त करने का कोई तरीका है?

उदाहरण के लिए, mysql इंटरैक्टिव मोड में, निष्पादन परिणाम एक समय के साथ, इस तरह आता है:

mysql> select count(*) from trialtable; 
+----------+ 
| count(*) | 
+----------+ 
|  4000 | 
+----------+ 
1 row in set (0.00 sec) 

मैं कमांड लाइन में एक ही प्रोफ़ाइल मिल सकता है?

धन्यवाद

+0

क्या यह आदेश के सामने 'समय' फेंकने के लिए उचित खेल है? या क्या आप निष्पादन समय की _real_ राशि चाहते हैं जो परिणामों की गणना करते समय MySQL उपभोग करता है? – sarnold

+0

@ कर्नाल्ड हां मैं "असली" समय देखना चाहता हूं। –

उत्तर

3

यहाँ PHP के लिए सटीक सिंटैक्स है।

mysql_query("SET profiling = 1;"); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 

$query="SELECT some_field_name FROM some_table_name"; 
$result = mysql_query($query); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 

$exec_time_result=mysql_query("SELECT query_id, SUM(duration) FROM information_schema.profiling GROUP BY query_id ORDER BY query_id DESC LIMIT 1;"); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 
$exec_time_row = mysql_fetch_array($exec_time_result); 

echo "<p>Query executed in ".$exec_time_row[1].' seconds'; 
0

आप -vv साथ mysql आह्वान कर सकते हैं, तो आपके द्वारा इंटरैक्टिव मोड में हैं करने के लिए बहुत-प्रिंट समान होगा:

$ mysql -vv -u myUser -pMyPass DBname -e 'select count(*) from mytable;' 
-------------- 
select count(*) from mytable 
-------------- 

+----------+ 
| count(*) | 
+----------+ 
| 1068316 | 
+----------+ 
1 row in set (0.00 sec) 

Bye 

आप अपने प्रश्नों पाइप रहे हैं, तो यह है -vvv:

$ echo 'select count(*) from mytable;' | mysql -vvv -u myUser -pMyPass DBname 
-------------- 
select count(*) from mytable 
-------------- 

+----------+ 
| count(*) | 
+----------+ 
| 1068316 | 
+----------+ 
1 row in set (1.34 sec) 

Bye 

समय आपके grep के लिए है। : डी

संबंधित मुद्दे