mysql 모니터링( slow 쿼리 찾기 )

2023. 3. 30. 08:08it

반응형

 

1. 디폴트 설정

  • slow_query_log: 기본값은 OFF입니다.
  • long_query_time: 기본값은 10초입니다.

- slow query log는 기록되지 않음,

- 기록이 되어도 실행시간이 10초 이상인 쿼리만 slow query로 간주

 

[ 설정 방법 2가지 ]

- 해당 설정은 my.cnf 또는 my.ini 파일에서 변경 가능

- 혹은 SET GLOBAL 명령어를 사용하여 런타임 시 사용가능

 

오늘은 런티임시 사용 가능한 명령어를 알아 보겠음

 

 

2. slow 쿼리 찾기

반응형
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

SELECT * FROM mysql.slow_log;

 

slow_query_log와 long_query_time 설정으로 찾을 수 있음

위 쿼리는 실행시간이 1초 이상인 값을 찾음

 

하지만, 해당 명령어를 사용하면 전체 세션에 적용이 됨

그래서 개인이 적용하는 방법을 알아보겠음

 

 

3. 개인 slow 쿼리

728x90
-- 현재 세션에서 slow query log를 사용하도록 설정
SET SESSION slow_query_log = 'ON';
SET SESSION long_query_time = 1;

-- slow query log 확인
SELECT * FROM mysql.slow_log;

-- 현재 세션에서 slow query log 사용하지 않도록 설정
SET SESSION slow_query_log = 'OFF';

- SET SESSION 명령어를 사용하여 현재 세션에서만 slow query log를 사용하도록 설정

 

 

4. mysql.slow_log 테이블 설명

- start_time: 쿼리 실행 시작 시간
- user_host: 쿼리를 실행한 사용자와 호스트 정보
- query_time: 쿼리 실행 시간
- lock_time: 쿼리에서 사용한 락(lock) 시간
- rows_sent: 쿼리 결과로 반환된 행(row) 수
- rows_examined: 쿼리 실행 시 검사한 행(row) 수
- db: 쿼리 실행 대상 데이터베이스(database) 이름
- last_insert_id: 마지막으로 삽입(insert)된 레코드의 ID
- insert_id: 쿼리에서 사용한 insert ID
- server_id: MySQL 서버 ID
- sql_text: slow query log에 기록된 SQL 쿼리

 

 

반응형