mysql командная строка возвращает время выполнения? - PullRequest
15 голосов
/ 22 февраля 2012

Я работаю на хосте Linux с командой mysql. У меня есть сценарий, который запускает командные команды MySQL (например, mysql -e "select..."), и я хочу суммировать время выполнения каждой из команд.

Есть ли способ получить время выполнения MySQL из командной строки?

Например, в интерактивном режиме mysql результат выполнения приходит со временем, например:

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

Могу ли я получить тот же профиль в командной строке?

Спасибо

Ответы [ 3 ]

16 голосов
/ 22 февраля 2012

Вы можете использовать

set profiling=1

, а затем, позже,

show profiles

, который выдаст список команд и времени.

См. http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html

ч / т http://ronaldbradford.com/blog/timing-your-sql-queries-2010-07-07/

4 голосов
/ 13 мая 2017

Вы можете вызвать mysql с помощью -vv, он будет очень похож на тот, когда вы находитесь в интерактивном режиме:

$ 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. : D

3 голосов
/ 13 апреля 2013

Вот точный синтаксис для 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...