Skip to main content

쿼리 프로파일링

  1. 프로파일링 활성화:

    SET profiling = 1;
  2. 원하는 쿼리 실행: 예를 들면:

    SELECT * FROM your_table WHERE some_column = 'some_value';
  3. 프로파일 결과 확인:

    SHOW PROFILES;

    이 명령은 실행한 쿼리의 목록을 보여줍니다. 각 쿼리는 고유한 쿼리 ID를 가지며, 이 ID를 사용하여 세부 프로파일 정보를 볼 수 있습니다.

  4. 특정 쿼리의 프로파일 세부 정보 확인: 예를 들어 쿼리 ID가 1인 경우:

    SHOW PROFILE FOR QUERY 1;

    이 명령은 쿼리의 실행 과정에서 발생하는 각 단계별로 소요된 시간을 보여줍니다.

  5. 프로파일링 비활성화: 프로파일링을 완료한 후에는 프로파일링을 비활성화해야 합니다:

    SET profiling = 0;

예시)

mysql> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select * from a order by a desc limit 20;
+---------+----------------------+------+------+------+------+
| a       | b                    | c    | d    | e    | f    |
+---------+----------------------+------+------+------+------+
| 2424796 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424795 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424794 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424793 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424792 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424791 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424790 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424789 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424788 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424787 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424786 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424785 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424784 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424783 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424782 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424781 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424780 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424779 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424778 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
| 2424777 | aasdwqtniowqtniowqnt | NULL | NULL | NULL | NULL |
+---------+----------------------+------+------+------+------+
20 rows in set (0.02 sec)

mysql> show profiles;
+----------+------------+------------------------------------------+
| Query_ID | Duration   | Query                                    |
+----------+------------+------------------------------------------+
|        1 | 0.01157325 | select * from a order by a desc limit 20 |
+----------+------------+------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show profile for query 1;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.002565 |
| checking permissions | 0.000406 |
| Opening tables       | 0.000430 |
| init                 | 0.000609 |
| System lock          | 0.000282 |
| optimizing           | 0.000098 |
| statistics           | 0.000302 |
| preparing            | 0.002321 |
| Sorting result       | 0.000119 |
| executing            | 0.000033 |
| Sending data         | 0.003081 |
| end                  | 0.000120 |
| query end            | 0.000189 |
| closing tables       | 0.000128 |
| freeing items        | 0.000433 |
| cleaning up          | 0.000458 |
+----------------------+----------+
16 rows in set, 1 warning (0.03 sec)