MySQL でプロファイリングする方法

まずパラメータを変更してプロファイリングをONにします。これはセッション毎に有効になります。

SET profiling=1;

次に、プロファイリングしたいSQLを発行します。

show engine innodb status;
use information_schema;

show profile を発行するとデータが出力されます。

show profile source;
+----------------------+----------+-----------------------+------------------+-------------+
| Status               | Duration | Source_function       | Source_file      | Source_line |
+----------------------+----------+-----------------------+------------------+-------------+
| starting             | 0.000053 | NULL                  | NULL             |        NULL |
| checking permissions | 0.000048 | check_access          | sql_parse.cc     |        5328 |
| checking permissions | 0.000034 | check_access          | sql_parse.cc     |        5328 |
| Opening tables       | 0.000074 | open_tables           | sql_base.cc      |        4911 |
| init                 | 0.000023 | mysql_prepare_select  | sql_select.cc    |        1050 |
| System lock          | 0.000016 | mysql_lock_tables     | lock.cc          |         304 |
| optimizing           | 0.000015 | optimize              | sql_optimizer.cc |         138 |
| statistics           | 0.000028 | optimize              | sql_optimizer.cc |         381 |
| preparing            | 0.000024 | optimize              | sql_optimizer.cc |         500 |
| executing            | 0.000016 | exec                  | sql_executor.cc  |         110 |
| checking permissions | 0.000095 | check_access          | sql_parse.cc     |        5328 |
| Sending data         | 0.000051 | exec                  | sql_executor.cc  |         187 |
| end                  | 0.000014 | mysql_execute_select  | sql_select.cc    |        1105 |
| query end            | 0.000013 | mysql_execute_command | sql_parse.cc     |        5038 |
| closing tables       | 0.000011 | mysql_execute_command | sql_parse.cc     |        5086 |
| removing tmp table   | 0.000015 | free_tmp_table        | sql_tmp_table.cc |        1852 |
| closing tables       | 0.000012 | free_tmp_table        | sql_tmp_table.cc |        1881 |
| freeing items        | 0.000047 | mysql_parse           | sql_parse.cc     |        6374 |
| cleaning up          | 0.000013 | dispatch_command      | sql_parse.cc     |        1764 |
+----------------------+----------+-----------------------+------------------+-------------+