Database/SQL

MySQL - 쿼리 성능(실행 시간, CPU 사용량 등) 확인하는 방법 [Profiling]

JaeHoney 2022. 3. 20. 11:42

MySQL Profiling

MySQL에서 실행한 쿼리들이 각 수행 시간이 얼마가 걸렸는지 확인할 수 있는 기능으로 쿼리 프로파일링(Query Profiling)을 제공합니다.

 

profiling 설정을 활성화하면 앞으로 실행되는 모든 쿼리문의 수행 시간을 기록합니다.

 

profiling 속성은 적지 않은 부하를 생성하기 때문에, 기본값으로는 OFF로 되어있습니다.

 

Profiling  옵션 확인

Profiling 옵션의 활성화 여부는 다음과 같이 확인합니다.

SELECT @@profiling;

결과 값이 1이면 ON, 0이면 OFF 입니다.

 

활성화 

쿼리 프로파일링을 다음과 같이 활성화합니다.

SET profiling=1;

그리고 다시 SELECT @@profiling;으로 조회를 해보면 아래와 같이 활성화가 되어 있습니다.

 

성능을 측정할 쿼리를 날려보겠습니다.

DELETE FROM user_info WHERE name LIKE '%naver%' AND no > 1;

 

성능 측정

실행했던 SQL문들의 수행 시간에 대해서 다음과 같이 조회할 수 있습니다.

SHOW profiles

그러면 해당 쿼리의 수행 시간이 얼마나 걸렸나 측정할 수 있습니다. (환경에 따라 오차가 발생하니 여러번 측정해서 평균을 구해야 합니다.)

 

SQL문 1개에 대한 성능이 아니라, SQL문을 블록 단위로 쪼갠 더 상세한 정보를 얻고 싶다면 아래와 같이 조회할 수 있습니다. 22는 Query_ID 입니다.

SHOW profile FOR QUERY 22;

해당 쿼리문의 수행 시간을 더 상세한 단위로 얻을 수 있습니다.

 

 

기타 (CPU 사용량 체크 등)

 

아래의 명령어로 해당 쿼리의 CPU 사용량을 분석할 수도 있습니다.

SHOW profile CPU FOR QUERY 22;

결과는 아래와 같습니다.

 

Profile을 통해 조회할 수 있는 목록입니다.

  • ALL
  • BLOCK IO
  • CONTEXT SWITCHES
  • CPU
  • IPC
  • PAGE FAULTS
  • SOURCE
  • SWAPS

 

감사합니다.