미스터 역마살

Mysql 프로파일링 본문

Database/MYSQL

Mysql 프로파일링

Mr. YeokMaSsal 2022. 8. 8. 20:47
728x90
반응형

Mysql 프로파일링

mysql은 기본적으로 비활성화(OFF)되어 있으므로 프로파일링을 진행하기 위해서는 활성화 작업을 해야함

show variables like 'profiling%';

* 결과
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| profiling              | OFF   |
| profiling_history_size | 15    |
+------------------------+-------+

set profiling = 'ON';

프로파일링 수행할 SQL 출력

SELECT 사원번호
FROM 사원
WHERE 사원번호 = 100000;

* 결과
+----------+
| 사원번호 |
+----------+
|   100000 |
+----------+
1 row in set (0.00 sec)

show profiles;

* 결과
+----------+------------+---------------------------------------------------------+
| Query_ID | Duration   | Query	                                                  |
+----------+------------+---------------------------------------------------------+
|        1 | 0.00055779 | SELECT 사원번호 FROM 사원 WHERE 사원번호 = 100000       |
+----------+------------+---------------------------------------------------------+
1 rows in set (0.000 sec)

특정 쿼리 ID에 대해서만 프로파일링 된 상세내용을 확인하고자 한다면 쿼리 ID를 입력하여 다음과 같은 문법으로 결과를 확인함

show profile for query 1;

* 결과
+------------------------+----------+
| Status                 | Duration |
+------------------------+----------+
| Starting               | 0.000116 |
| checking permissions   | 0.000009 |
| Opening tables         | 0.000039 |
| After opening tables   | 0.000008 |
| System lock            | 0.000008 |
| table lock             | 0.000022 |
| init                   | 0.000037 |
| Optimizing             | 0.000029 |
| Statistics             | 0.000096 |
| Preparing              | 0.000006 |
| Unlocking tables       | 0.000020 |
| Preparing              | 0.000024 |
| Executing              | 0.000006 |
| Sending data           | 0.000020 |
| End of update loop     | 0.000013 |
| Query end              | 0.000005 |
| Commit                 | 0.000006 |
| closing tables         | 0.000004 |
| Unlocking tables       | 0.000003 |
| closing tables         | 0.000008 |
| Starting cleanup       | 0.000003 |
| Freeing items          | 0.000007 |
| Updating status        | 0.000064 |
| Reset for next command | 0.000006 |
+------------------------+----------+
24 rows in set (0.005 sec)

 

 

프로파일링 선택 가능한 출력정보

show profile all for query 1;

* 결과
+--------------------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+--------------------------------+----------------------+-------------+
| Status                         | Duration | CPU_user | CPU_system | Context_voluntary | Context_involuntary | Block_ops_in | Block_ops_out | Messages_sent | Messages_received | Page_faults_major | Page_faults_minor | Swaps | Source_function                | Source_file          | Source_line |
+--------------------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+--------------------------------+----------------------+-------------+
| starting                       | 0.000093 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | NULL                           | NULL                 |        NULL |
| Executing hook on transaction  | 0.000003 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | launch_hook_trans_begin        | rpl_handler.cc       |        1122 |
| starting                       | 0.000010 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | launch_hook_trans_begin        | rpl_handler.cc       |        1124 |
| checking permissions           | 0.000007 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | check_access                   | sql_authorization.cc |        2207 |
| Opening tables                 | 0.000052 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | open_tables                    | sql_base.cc          |        5605 |
| init                           | 0.000011 | 0.015625 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | Sql_cmd_dml::execute           | sql_select.cc        |         684 |
| System lock                    | 0.000025 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | mysql_lock_tables              | lock.cc              |         329 |
| optimizing                     | 0.000018 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | JOIN::optimize                 | sql_optimizer.cc     |         282 |
| statistics                     | 0.000118 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | JOIN::optimize                 | sql_optimizer.cc     |         504 |
| preparing                      | 0.000015 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | JOIN::optimize                 | sql_optimizer.cc     |         588 |
| executing                      | 0.000013 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | SELECT_LEX_UNIT::ExecuteIterat | sql_union.cc         |        1084 |
| end                            | 0.000003 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | Sql_cmd_dml::execute           | sql_select.cc        |         737 |
| query end                      | 0.000002 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | mysql_execute_command          | sql_parse.cc         |        4703 |
| waiting for handler commit     | 0.000009 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | ha_commit_trans                | handler.cc           |        1589 |
| closing tables                 | 0.000008 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | mysql_execute_command          | sql_parse.cc         |        4754 |
| freeing items                  | 0.000064 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | mysql_parse                    | sql_parse.cc         |        5435 |
| cleaning up                    | 0.000018 | 0.000000 |   0.000000 |              NULL |                NULL |         NULL |          NULL |          NULL |              NULL |              NULL |              NULL |  NULL | dispatch_command               | sql_parse.cc         |        2217 |
+--------------------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+--------------------------------+----------------------+-------------+
17 rows in set, 1 warning (0.00 sec)
====================================================================================
* SQL
show profile cpu for query 1;
* 결과
+--------------------------------+----------+----------+------------+
| Status                         | Duration | CPU_user | CPU_system |
+--------------------------------+----------+----------+------------+
| starting                       | 0.000093 | 0.000000 |   0.000000 |
| Executing hook on transaction  | 0.000003 | 0.000000 |   0.000000 |
| starting                       | 0.000010 | 0.000000 |   0.000000 |
| checking permissions           | 0.000007 | 0.000000 |   0.000000 |
| Opening tables                 | 0.000052 | 0.000000 |   0.000000 |
| init                           | 0.000011 | 0.015625 |   0.000000 |
| System lock                    | 0.000025 | 0.000000 |   0.000000 |
| optimizing                     | 0.000018 | 0.000000 |   0.000000 |
| statistics                     | 0.000118 | 0.000000 |   0.000000 |
| preparing                      | 0.000015 | 0.000000 |   0.000000 |
| executing                      | 0.000013 | 0.000000 |   0.000000 |
| end                            | 0.000003 | 0.000000 |   0.000000 |
| query end                      | 0.000002 | 0.000000 |   0.000000 |
| waiting for handler commit     | 0.000009 | 0.000000 |   0.000000 |
| closing tables                 | 0.000008 | 0.000000 |   0.000000 |
| freeing items                  | 0.000064 | 0.000000 |   0.000000 |
| cleaning up                    | 0.000018 | 0.000000 |   0.000000 |
+--------------------------------+----------+----------+------------+
17 rows in set, 1 warning (0.00 sec)
====================================================================================
* SQL
show profile block io for query 1;

* 결과
+--------------------------------+----------+--------------+---------------+
| Status                         | Duration | Block_ops_in | Block_ops_out |
+--------------------------------+----------+--------------+---------------+
| starting                       | 0.000093 |         NULL |          NULL |
| Executing hook on transaction  | 0.000003 |         NULL |          NULL |
| starting                       | 0.000010 |         NULL |          NULL |
| checking permissions           | 0.000007 |         NULL |          NULL |
| Opening tables                 | 0.000052 |         NULL |          NULL |
| init                           | 0.000011 |         NULL |          NULL |
| System lock                    | 0.000025 |         NULL |          NULL |
| optimizing                     | 0.000018 |         NULL |          NULL |
| statistics                     | 0.000118 |         NULL |          NULL |
| preparing                      | 0.000015 |         NULL |          NULL |
| executing                      | 0.000013 |         NULL |          NULL |
| end                            | 0.000003 |         NULL |          NULL |
| query end                      | 0.000002 |         NULL |          NULL |
| waiting for handler commit     | 0.000009 |         NULL |          NULL |
| closing tables                 | 0.000008 |         NULL |          NULL |
| freeing items                  | 0.000064 |         NULL |          NULL |
| cleaning up                    | 0.000018 |         NULL |          NULL |
+--------------------------------+----------+--------------+---------------+
17 rows in set, 1 warning (0.00 sec)

 

 

728x90

'Database > MYSQL' 카테고리의 다른 글

binlog  (0) 2022.08.10
Mysql 쿼리 힌트  (0) 2022.08.09
My sql 실행 계획 (2/2)  (0) 2022.08.08
My SQL 실행 계획 (1/2)  (0) 2022.08.08
Mysql Audit Log  (0) 2022.08.03
Comments