SQL & DB/SQL 튜닝

[SQL 튜닝] SQL분석도구(MYSQL)

YSY^ 2021. 5. 1. 20:54

실행계획 확인

1. Explain 실행계획 확인 방법

EXPLAIN

SELECT * FROM 테이블

2. 컬럼별 내용정리

출처 : https://nomadlee.com/mysql-explain-sql/

 

MySQL Query 추적

MySQL에 root로 로그인합니다.

-general_log 확인

일반적으로 모든 쿼리에대한 로그를 남기기 위해 general_log Value 값을 변경해 주어야한다.

general log란 MySQL에서 실행되는 전체 쿼리에 대한 로그이며, general log를 활성화하면 MySQL이 쿼리 요청을 받을 때 즉시 general log에 기록

SHOW VARIABLES LIKE '%general%';

 

 

-general_log 상태값 변경

상태값을 ON으로 변경해준다.(mysql 재시작 필요 없음)

general_log_file의 기본 경로에서 실시간으로 입력되는 쿼리 로그를 확인할 수 있음

SET GLOBAL general_log = ON;

 

-로그확인

variables의 상태값을 변경해주는 시점부터 발생하는 쿼리에 대해 general_log_file의 경로에 로그를 남기기 시작한다.

위 방법으로 변경해주면 MySQL을 재실행 할 필요없이 바로 로그를 남긴다.

MySQL 커넥션을 끊고 해당 경로의 파일을 확인한다.

vi /home/mysql_data/localhost.log

 

경로를 바꾸려면 다음과 같이 입력합니다. (경로를 변경하게 되면 mysql을 재시작해야 합니다.)

[mysqld]에 아래의 2줄을 삽입합니다.

0은 비활성, 1은 활성을 의미합니다.

# vi /etc/my.cnf [mysqld]general_log_file  = /var/log/general.log  ⇐ 변경할 경로 입력
general_log  = 1

 

Variables 자동 설정

MySQL 서버를 재실행하면 general_log 상태값은 다시 OFF로 바뀐다.

재실행해도 로그가 남도록 my.cnf파일의 설정 값을 변경해준다.

# /etc/my.cnf 파일 추가

general_log = ON
general_log_file = /home/mysql_data/log/history.log
mkdir /home/mysql_data/log
touch /home/mysql_data/log/history.log
chown -R mysql:mysql /home/mysql_data/log

재실행 후 이전과 다르게 자동으로 general_log 상태값이 ON으로 되어 있고 로그파일 경로도 변경될 것이다.

출처 : myjamong.tistory.com/59, blog.plura.io/?p=4493

 

모니터링 쿼리

잘 정리된 블로그가 있어 링크로 대신합니다.

nomadlee.com/mysql-monitoring-query/#Index

 

MySQL 상태 모니터링 쿼리 Monitoring Query - Useful Guide

MySQL 모니터링, mysql monitoring query, lock, performance_schema, performance, SQL, QPS, information_schema, Optimize, process, information

nomadlee.com

 

728x90
반응형