MySQL의 Slow Query를 모니터링하기 위한 Slow Query 관련 Parameters 목록을 간단히 정리해봤습니다.
다음에는 슬로우 쿼리 로그를 해석해보겠습니다.
1. slow_query_log: 슬로우 쿼리 저장 유무 설정 (On / Off)
2. long_query_time: 슬로우 쿼리 기준 시간 설정 (ex. 5로 설정한 경우 5초 이상 걸린 쿼리 저장)
3. log_output: FILE 로 저장할지 TABLE에 저장할지 설정
4. slow_query_log_file: FILE로 저장할 경우 로그 파일경로 및 이름 설정
- Paramter name: slow_query_log
- 설정 가능한 값: ON / OFF
- https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_slow_query_log
-- 설정
SET GLOBAL slow_query_log = 'ON';
-- 확인
SHOW GLOBAL VARIABLES LIKE 'slow%';
- Parameter name: long_query_time
- 설정 가능 범위: 0 ~ 31536000 초 (마이크로 초 단위로 설정할 수 있다고 합니다)
(The value can be specified to a resolution of microseconds.)
- https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_long_query_time
-- 설정
SET GLOBAL long_query_time = 1;
-- 확인
SHOW GLOBAL VARIABLES LIKE 'long_query_time';
- Parameter name: log_output
- 설정 가능 값: FILE(파일로 저장), TABLE(테이블에 저장), NONE(저장하지 않음)
- 아래 처럼 테이블에 저장하도록 설정하면 mysql.slow_log 테이블 에서 슬로우 쿼리 로그를 확인할 수 있습니다.
- https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_log_output
SET GLOBAL log_output = 'TABLE';
SHOW GLOBAL VARIABLES LIKE '%log_output';
select * from mysql.slow_log;
-- general_log 저장 테이블, general_log를 보고 general_log 파라미터를 ON 해줘야합니다.
-- select * from mysql.general_log;
* slow_log 테이블은 서버에 데이터가 CSV 파일(ENGINE 타입: CSV)로 저장됩니다.
(slow_log 테이블 확인)
select * from information_schema.tables
where table_name = 'slow_log';
- Parameter name: slow_query_log_file
제너럴 로그 파일의 저장 경로 또한 general_log_file 파라미터로 설정할 수 있습니다.
- https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_slow_query_log_file
SHOW GLOBAL VARIABLES LIKE '%log_file%';
-- 예시
-- slow_query_log_file: /opt/homebrew/var/mysql/hostname-slow.log
1. Real MySQL 8.0(백은빈, 이성욱), 위키북스(2021), 4.4.3 슬로우 쿼리로그 (150 page)
2. MySQL 8.0 Reference Manual (System Variables): https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
3. MySQL 8.0 Reference Manual (Set Variable): https://dev.mysql.com/doc/refman/8.0/en/set-variable.html
[MySQL] 인덱스 스킵 스캔 (Index Skip Scan) (0) | 2023.06.04 |
---|---|
[MySQL] WHERE절에 EXISTS 사용해서 빠르게 조회하기 (0) | 2023.01.24 |
RedShift 테이블 별 용량 조회하기 (레드시프트 테이블 용량 조회) (0) | 2022.08.29 |
NoSQL 등장 배경 및 종류: 트래픽 증가에 대응하기 위해 등장 (0) | 2022.08.23 |
[데이터베이스] 데이터 테이블 종류 및 특성 (운영계 - OLTP 관점) (0) | 2022.03.22 |