>  기사  >  데이터 베이스  >  MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석

MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석

不言
不言앞으로
2018-10-11 13:58:552469검색

이 기사는 MySQL 일반 쿼리 로그와 느린 쿼리 로그에 대한 간단한 분석을 제공합니다. 필요한 친구가 참고할 수 있기를 바랍니다.

MySQL의 로그에는 오류 로그, 바이너리 로그, 일반 쿼리 로그, 느린 쿼리 로그 등이 포함됩니다. 여기서는 일반적으로 사용되는 두 가지 기능인 일반 쿼리 로그와 느린 쿼리 로그를 주로 소개합니다.

1) 일반 쿼리 로그: 설정된 클라이언트 연결 및 실행된 명령문을 기록합니다.

2) 느린 쿼리 로그: longquerytime 초 이상 걸리는 쿼리나 인덱스를 사용하지 않는 쿼리를 모두 기록합니다.

(1) 일반 쿼리 로그

일반 로그 쿼리를 학습할 때는 두 가지 공통 명령어를 알아야 합니다. 데이터베이스 :

1) '%general%';

general_log 값이 ON이면 ON, OFF이면 현재 일반 로그 쿼리가 켜져 있는지 확인할 수 있습니다. 꺼져 있습니다 (기본적으로 꺼져 있습니다).

1) '%log_output%'과 같은 변수를 표시합니다.

현재 느린 쿼리 로그 출력의 형식을 봅니다. 이 형식은 FILE(데이터베이스의 데이터 파일에 저장된 호스트 이름.log) 또는 TABLE(데이터베이스에 저장됨)일 수 있습니다. ) mysql.general_log)

질문: MySQL 일반 쿼리 로그를 활성화하는 방법과 일반 로그 출력 형식을 출력하도록 설정하는 방법은 무엇입니까?

일반 로그 쿼리 활성화: set global generic_log=on;

일반 로그 쿼리 끄기: set global generic_log=off;

일반 로그 출력을 테이블 모드로 설정: set global log_output='TABLE';

일반 로그 설정 출력 파일 모드의 경우: set global log_output='FILE';

테이블 및 파일 모드의 일반 로그 출력 설정: set global log_output='FILE,TABLE';

(참고: 위 명령은 현재에만 적용되며 더 이상 적용되지 않습니다. MySQL을 다시 시작하면 작동합니다. 영구적으로 적용하려면 my.cnf를 구성해야 합니다.)

my.cnf 파일의 구성은 다음과 같습니다.

general_log=1 # 값이 1이면 활성화됨을 의미합니다. 일반 로그 쿼리, 값 0은 일반 로그 쿼리 끄기

log_output=FILE, TABLE#일반 로그의 출력 형식을 파일 및 테이블로 설정

(2) 느린 쿼리 로그

MySQL의 느린 쿼리 로그 MySQL에서 제공하는 로그 레코드로 MySQL에서 응답 시간이 임계값을 초과하는 명령문을 기록하는 데 사용됩니다. 구체적으로 실행 시간이 long_query_time 값을 초과하는 SQL을 말하며 느린 쿼리 로그에 기록됩니다. 파일 또는 데이터베이스 테이블. 고성능 요구 사항이 필요한 경우 파일을 작성하는 것이 좋습니다. 기본적으로 MySQL 데이터베이스는 느린 쿼리 로그를 활성화하지 않습니다. long_query_time의 기본값은 10(즉, 10초, 일반적으로 1초로 설정됨)입니다. 즉, 10초 이상 실행되는 명령문은 느린 쿼리 명령문입니다.

일반적으로 큰 테이블(예: 테이블의 데이터 양이 수백만 개)에서는 느린 쿼리가 발생하며, 이때 쿼리 조건과 일치하는 필드는 인덱싱되지 않습니다. long_query_time을 확인하는 데 시간이 오래 걸리고

쿼리문이 느립니다.

질문: 느린 쿼리 로그의 현재 상태를 확인하는 방법은 무엇입니까?

MySQL에 명령어 입력:

'%quer%'와 같은 변수 표시;

주로 다음 매개변수를 마스터하세요.

(1) Slow_query_log 값은 느린 쿼리 로그를 켜려면 ON이고, OFF는 느린 쿼리 로그를 끄십시오.

(2) Slow_query_log_file의 값은 파일에 기록된 느린 쿼리 로그입니다(참고: 기본 이름은 호스트 이름.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으로 설정하는 것이 전제이다.

질문: MySQL 느린 쿼리의 출력 로그 형식을 파일이나 테이블로 설정하시겠습니까, 아니면 둘 다로 설정하시겠습니까?

명령어 사용: '%log_output%'과 같은 변수 표시

log_output 값을 통해 출력 형식을 확인할 수 있습니다. 물론 출력 형식을 텍스트로 설정할 수도 있고, 텍스트와 데이터베이스 테이블을 동시에 기록할 수도 있습니다. 설정 명령은 다음과 같습니다.

느린 쿼리 로그를 테이블에 출력합니다(예: mysql.slow_log)

set globallog_output='TABLE ';

느린 쿼리 로그는 텍스트(즉, Slow_query_log_file에 지정된 파일)로만 출력됩니다.

setglobal log_output='FILE';

여기서 아키텍처 학습 교류 그룹을 추천합니다. 모든 사람. 커뮤니케이션 및 학습 그룹 번호: 478030634. Spring, MyBatis, Netty 소스 코드 분석, 높은 동시성 원칙, 고성능, 분산, 마이크로서비스 아키텍처, JVM 성능 최적화, 분산 아키텍처 등 수석 설계자가 기록한 일부 비디오를 공유합니다. 건축가에게 꼭 필요한 지식 시스템이 되었습니다. 무료 학습자료도 받아보실 수 있고 지금까지 많은 혜택을 받고 있어요

느린 쿼리 로그는 텍스트와 테이블에 동시에 출력됩니다

setglobal log_output='FILE,TABLE';

느린 쿼리 로그 테이블의 데이터와 텍스트의 데이터 형식 분석에 대해:

느린 쿼리 로그 기록 myql.slow_log 테이블의 형식은 다음과 같습니다.

MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석

느린 쿼리 로그는 hostname.log 파일에 기록되며, 형식은 다음과 같습니다.

MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석

테이블인지 파일인지 구체적으로 기록되어 있음을 알 수 있다: 어떤 문이 느린 쿼리를 발생시켰는지(sql_text), 느린 쿼리문의 쿼리 시간(query_time), 테이블 잠금 시간(Lock_time), 스캔된 행 수(rows_examined) 및 기타 정보.

질문: 현재 느린 쿼리 문 수를 쿼리하는 방법은 무엇입니까?

MySQL에는 현재 느린 쿼리 문 수를 구체적으로 기록하는 변수가 있습니다.

명령을 입력하세요. show global status like '%slow%';

MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석

(참고: 위의 모든 명령, MySQL 셸을 통해 매개변수를 설정하면 MySQL을 다시 시작하면 설정된 모든 매개변수가 유효하지 않게 됩니다. 영구적으로 적용하려면 구성 매개변수를 my.cnf 파일에 작성해야 합니다.

추가 지식 포인트: MySQL의 자체 느린 쿼리 로그 분석 도구 mysqldumpslow를 사용하여 로그를 분석하는 방법은 무엇입니까?

perlmysqldumpslow –s c –t 10 Slow-query.log

구체적인 매개변수 설정은 다음과 같습니다.

-s는 정렬 방법을 나타내며, c, t, l, r은 레코드 수, 시간, 쿼리를 기반으로 합니다. time, return 각각 레코드 개수로 정렬합니다. ac, at, al, ar은 해당 flashback을 나타냅니다.

-t는 top의 의미를 나타내며 다음 데이터는 이전 레코드가 몇 개 반환되는지 나타냅니다. g 뒤에는 정규식 일치, 대소문자 구분이 올 수 있습니다.

MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석위 매개변수의 의미는 다음과 같습니다.

Count:414 문이 414번 나타납니다.

Time=3.51s(1454) 최대 실행 시간은 3.51s이며 총 누적 시간은 다음과 같습니다.

Lock=0.0s (0) 잠금을 기다리는 최대 시간은 0초이고, 잠금을 위한 누적 대기 시간은 0초입니다.

Rows=2194.9 (9097604) 클라이언트에 전송되는 최대 행 수입니다. 는 2194.9이고, 클라이언트에 전송된 함수의 누적 개수는 90976404개입니다.

(참고: mysqldumpslow 스크립트는 Perl 언어로 작성되었으며, mysqldumpslow의 구체적인 사용법은 나중에 논의됩니다.)

질문: 실제 학습 과정에서 어떻게 설정된 느린 쿼리가 효과적인 것을 알고 계시나요?

매우 간단합니다. 예를 들어 느린 쿼리 log_query_time의 값이 1로 설정된 경우 다음 명령문을 실행할 수 있습니다.

selectsleep(1);

이 명령문은 다음과 같습니다. 느림 해당 문장을 쿼리한 후, 해당 로그 출력 파일이나 테이블에 해당 문장이 존재하는지 확인할 수 있습니다.

위 내용은 MySQL 일반 쿼리 로그 및 느린 쿼리 로그를 간단하게 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제