본문 바로가기
개발/database

MySQL/MariaDB 프로파일링

by 가시죠 2022. 9. 18.
반응형

프로파일링

SQL문에서 문제가 되는 병목 지점을 찾고자 사용하는 수단으로 느린 쿼리나 문제가 있다고 의심되는 SQL문의 원인을 확인 할 수 있다.

툴에서 실행하지 않고, CLI 환경에서 실행해야 정확한 확인이 가능하다.
-- 해당 접속 세션에서만 영향을 활성화 되며, 다른 세션에는 영향을 미치지 않는다.
-- 프로파일링 활성화 / 비활성화를 확인한다.
mysql> show variables like 'profileing%';

-- 비활성화 되어 있을 경우 SET 키워드로 활성화 해준다.
mysql> set profileing = 'ON';

-- 프로파일링 할 쿼리를 실행한다.
mysql> SELECT 컬럼, 컬럼, 컬럼
    -> FROM 테이블명
    -> WHERE 조건
    
-- show profiles 명령으로 query_id가 2인 쿼리를 확인한다. (만약 2가 없으면 프로파일링 대상이 없는 것이다.)
mysql> show profiles;

-- 특정 쿼리ID에 대해서만 프로파일링 하고 싶을 경우
mysql> show profile for query 1;

 

프로파일링 항목

항목 설명
starting SQL 문 시작
checking permissions 필요 권한 확인
Opening tables 테이블 열기
After opening tables 테이블을 연 이후
System lock 시스템 잠금
Table lock 테이블 잠금
init 초기화
optimizing 최적화
statistics 통계
preparing 준비
executing 실행
Sending data 데이터 보내기
end
query end 쿼리 끝
closing tables 테이블 닫기
Unlocking tables 테이블 잠금 해제
freeing items 항목 해방
updating status 상태 업데이트
cleaning up 청소

 

프로파일링 실행 시 입력 가능한 옵션 항목

옵션 설명
all 모든 정보를 표시
block io 블록 입력/출력 작업의 횟수를 표시
context switches 자발적 및 비자발적인 컨텍스트 스위치 수를 표시
cpu 사용자 및 시스템cpu 사용 기간을 표시
ipc 보내고 받은 메시지의 수를 표시
page faults 주 페이지 오류 및 부 페이지 오류 수를 표시
source 함수가 발행하는 파일 이름과 행 번호와 함께 소스 코드의 함수 이름을 표시
swaps 스왑 카운트 표시

ex) show profile all

 

 

반응형

'개발 > database' 카테고리의 다른 글

mariadb 트리거 생성 예제 - 입력,수정,삭제  (0) 2023.08.04
WITH 절 사용법  (0) 2023.03.28
MySQL/MariaDB 실행계획 수행  (0) 2022.09.18
서브쿼리 위치에 따른 SQL 용어  (0) 2022.09.18
[MySQL/MariaDB] SQL 구문 차이  (0) 2022.09.18

댓글