slow query 확인이유
client에게 요청받은 api가 예상했던 query 수행시간보다 오래 걸릴때 slow query를 확인할 수 있다.
로그는 query, 발생시간, 수행시간, 쿼리를 요청한 User 및 host등이 저장된다.
mysql slow query 설정여부 확인
위 명령어를 그대로 치면 on/off가 나온다.
default는 off이며 slow query 설정이 꺼져있다.
mysql slow query 설정하기
방법 1)
위처럼 set global 명령어를 사용하여 해당 컬럼을 On으로 바꿔주면 바뀐다.
방법2)
1이 활성(ON)이고 0이 비활성(OFF)이다.
그래서 1을 값으로 넣으면 ON으로 바뀐다.
참고로 위처럼 다른 것들도 옵션을 줘서 수정할 수 있다.
방법3)
slow_query_log_file의 위치는 /var/lib/mysql/c8f0688592b5-slow.log 이라고 하며 파일이 존재하는것을 볼 수 있다.
c8f0688592b5-slow.log 이 파일은 로그 저장소이다.
근데 이 파일을 수정하는 것이 아니다.
/etc/my.cnf 파일을 수정해야한다.
vi 로
slow_query_log=1 //////1=on 0=off
log_slow_log_file = 원하는 파일위치
long_query_time = 3
위처럼 넣어도 된다.
물론 파일명을 바꿔도 된다.
파일명 바꾸고 해당 위치에 파일을 만들어주면 된다.
그리고 mysql start 라는 명령어를 쳐서 프로세스를 재시작 시켜준다.
슬로우 쿼리 로그 확인
파일명을 slow_queries.log 로 바꾸었다.
c8f0688592b5-slow.log 이라는 파일명을 읽지 못했기 때문이다.
위처럼 파일 위치 명령어를 넣었다면 /var/lib/mysql/slow_queries.log 파일이 생겨있는 것을 확인 가능하다.
# Time: 2023-11-14T15:52:05.676832Z
# User: root
# Host: localhost
# Query_time: 0.000599
# Lock_time: 0.000163
# Rows_sent: 3
# Rows_examined: 86
# Database: test
# Table: users
# SELECT * FROM users WHERE id = 1;
위 같은 내용이 나와서 슬로우 쿼리를 확인해볼 수 있다.
참고
- Query_time : 쿼리 처리시간
- Lock_time : lock이 걸린 횟수
- Row_sent : 조회 결과 Row 수
- Rows_examined : 조회 대상 ROW 수
MySQL 쿼리 응답시간 체크
위 명령어를 사용하면 MySQL 서버의 상태 정보를 출력한다.
- -i5: 5초 간격으로 서버 상태 정보를 업데이트
- status: 서버 상태 정보를 출력
- -u root: root 사용자로 명령어를 실행
- -p: 비밀번호를 입력하라는 프롬프트를 표시
종료방법
- Ctrl+C
- pkill mysqladmin
- ps aux | grep mysqladmin -> pid 확인 -> kill <PID>
참고
위처럼 SET GLOBAL long_query_time=3; 을 사용해도 10으로 고정되고 수정되지 않는다.
하지만 SET @@GLOBAL.long_query_time = 1; 으로 조회하면 1초로 수정이 되어서 나온다.
현재 세션에 GLOBAL 변수 설정을 적용하려면 다시 연결하거나 @@SESSION.long_query_time 변수를 설정해야 한다.
(기본적으로 SHOW VARIABLES는 세션 변수를 표시한다.)
long_query_time이 바뀌지 않는가에 대해 참고
참고 블로그
'Database' 카테고리의 다른 글
Localhost와 127.0.0.1의 차이 (0) | 2024.03.12 |
---|---|
Mysql, Postgresql, Mongoose의 연결 요청 처리 방식 (0) | 2024.03.11 |
MySQL Flush (0) | 2024.03.10 |
MySQL Buffer Pool 조정하기 (0) | 2024.03.09 |
Mysql Container를 DBeavor를 통해 접속하기 & Data Dump (0) | 2023.08.21 |