MySQL의 로그에는 오류 로그, 이진 로그, 일반 쿼리 로그, 느린 쿼리 로그 등이 포함됩니다. 다음은 일반적으로 사용되는 두 가지 함수입니다: 일반 쿼리 로그와 느린 쿼리 로그입니다.
1) 느린 쿼리 로그:long_query_time초 이상 실행되거나 인덱스를 사용하지 않는 모든 쿼리를 기록하세요
2) 일반 쿼리 로그:클라이언트 연결 설정과 실행된 문장을 기록하세요.
1: MySQL 느린 쿼리에 대하여:
MySQL의 느린 쿼리 로그는 MySQL에서 제공하는 일종의 로깅으로, MySQL의 응답 시간이 임계값을 초과했다는 문장을 기록하는 데 사용됩니다. 특히 실행 시간이 long_query_time 이상인 SQL을 의미하며, 이는 느린 쿼리 로그에 기록됩니다(로그는 파일이나 데이터베이스 테이블에 기록될 수 있으며, 성능 요구가 높으면 파일을 작성하는 것이 권장됩니다). 기본적으로 MySQL 데이터베이스는 느린 쿼리 로그를 활성화하지 않으며, long_query_time의 기본 값은 10(즉, 10초, 보통 1초로 설정)입니다. 즉, 10초 이상 실행되는 문은 느린 쿼리 문으로 간주됩니다.
일반적으로 느린 쿼리는 큰 테이블(예: 수백만 개의 데이터가 있는 테이블)에서 발생하며, 쿼리 조건의 필드는 인덱싱되지 않으며, 이 시점에서는 쿼리 조건에 맞는 필드가 전체 테이블에서 스캔되어 long_query_time을 확인하는 데 시간이 걸립니다.
이것은 느린 쿼리 문장입니다.
질문: 느린 쿼리 로그의 현재 열기 상태를 어떻게 확인할 수 있나요?
MySQL에서 명령어를 입력하세요:
다음 매개변수들이 주로 마스터됩니다:
(1) slow_query_log의 값은 느린 쿼리 로그를 켜기 위해 ON이고, OFF는 느린 쿼리 로그를 끄는 데 사용됩니다.
(2) slow_query_log_file의 값은 파일에 기록된 느린 쿼리 로그입니다(참고: 기본 이름은 hostname.log이며, 느린 쿼리 로그가 지정된 파일에 기록되었는지는 느린 쿼리의 출력 로그 형식을 파일로 지정해야 하며, 관련 명령어는 다음과 같습니다: '%log_output%'와 같은 변수를 보여주기; 출력 형식을 보기 위해서입니다.
(3) long_query_time 슬로우 쿼리의 임계값을 명시합니다. 즉, 실행 시간이 이 임계값을 초과하면 느린 쿼리 문이 되며 기본값은 10초입니다.
(4) log_queries_not_using_indexes 값이 ON으로 설정되어 있으면, 인덱스를 사용하지 않는 모든 쿼리가 기록됩니다(참고: log_queries_not_using_indexes이 ON으로만 설정되어 있고 slow_query_log이 OFF로 설정되어 있다면, 이 시점에서는 설정이 적용되지 않습니다. 즉, slow_query_log 값이 ON으로 설정되어 있을 때 설정이 적용됩니다.) , 이 기능은 일반적으로 공연 조정 시 일시적으로 켜집니다.
2. 일반 쿼리 로그
만약 general_log의 값이ON이 켜져 있습니다, 에 대해OFF는 닫혔습니다(기본값으로 꺼짐).
현재 느린 쿼리 로그 출력의 형식을 확인해 보세요. 이는 FILE(디지털 데이터베이스의 데이터 파일에 저장된 hostname.log)이거나 TABLE(데이터베이스에 저장된 mysql.general_log)일 수 있습니다
(참고: 위 명령어는 현재 시점에만 유효하며, MySQL 재시작이 유효하지 않을 때만 적용됩니다. 영구적으로 적용하려면 my.cnf 설정을 해야 합니다.)
로그 출력의 렌더링은 다음과 같습니다:
my.cnf 파일은 다음과 같이 구성되어 있습니다:
general_log=1 #为1表示开启通用日志查询, 값이 0이면 일반 로그 쿼리가 종료되었음을 나타냅니다
log_output=FILE,TABLE# 일반 로그의 출력 형식을 파일과 테이블로 설정합니다
|