반응형
프로파일링
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 |
댓글