>  기사  >  데이터 베이스  >  mysql 느린 쿼리 란 무엇입니까?

mysql 느린 쿼리 란 무엇입니까?

青灯夜游
青灯夜游원래의
2022-02-17 16:37:107279검색

mysql에서 느린 쿼리는 느리게 실행되어 로그에 기록되는 SQL 문을 의미하며, "long_query_time" 매개변수에 설정된 시간 임계값을 초과하는 SQL 문 쿼리를 실행하는 것을 의미합니다. 느린 쿼리는 느린 쿼리 로그에 기록되며, 느린 쿼리 로그를 통해 최적화를 위한 실행 효율성이 낮은 쿼리 문을 확인할 수 있습니다.

mysql 느린 쿼리 란 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

느린 쿼리란 무엇인가요?

느린 쿼리는 이름에서 알 수 있듯이 느리게 실행되는 SQL 문을 로그에 기록한다는 의미입니다. 이는 mysql이 long_query_time 매개변수에 설정된 시간 임계값을 초과하는 모든 SQL 문 쿼리를 기록한다는 의미입니다.

느린 쿼리는 느린 쿼리 로그에 기록됩니다. 느린 쿼리 로그를 통해 어떤 쿼리문이 최적화를 위해 실행 효율성이 낮은지 확인할 수 있습니다. 이 로그는 SQL 문 최적화에 큰 도움을 줄 수 있습니다.

기본적으로 느린 쿼리 로그는 꺼져 있습니다. 느린 쿼리 로그 기능을 사용하려면 먼저 느린 쿼리 로그 기능을 활성화해야 합니다.

느린 쿼리 로그 구성

1. 느린 쿼리 기본 구성

  • 느린 쿼리 로그 시작 및 중지 기술 느린 쿼리 로그
  • slow_query_log_file은 느린 쿼리 로그의 저장 경로와 파일을 지정합니다. (기본값은 데이터 파일과 함께 저장됩니다. )
  • long_query_time은 느린 쿼리 로그 SQL 실행 시간 점수를 기록하도록 지정합니다. (단위: 초, 기본값은 10초)
  • log_queries_not_using_indexes 인덱스를 사용하지 않는 SQL을 기록할지 여부
  • log_output 로그가 저장되는 위치 [TABLE] [FILE] [ FILE, TABLE]

느린 쿼리를 구성한 후 다음을 포함하여 정규 SQL

을 기록합니다:

  • 쿼리 문
  • 데이터 수정 문
  • 롤백된 SQL

2. 다음 명령을 통해 확인합니다. 다음으로 위 구성을 구성합니다.

show VARIABLES like '%slow_query_log%'
show VARIABLES like '%slow_query_log_file%'
show VARIABLES like '%long_query_time%'
show VARIABLES like '%log_queries_not_using_indexes%'
show VARIABLES like 'log_output'

느린 쿼리 매개변수 설정:

set global long_query_time=0;   ---默认10秒,这里为了演示方便设置为0
set GLOBAL  slow_query_log = 1; --开启慢查询日志
set global log_output='FILE,TABLE'  --项目开发中日志只能记录在日志文件中,不能记表中

설정이 완료된 후 일부 목록을 쿼리하면 느린 쿼리 로그 파일에 데이터가 있는 것을 확인할 수 있습니다.

근데 내 컴퓨터에서는 왜인지는 모르겠지만 현재로서는 SQL 결과가 정상적으로 실행되지 않습니다. 업데이트할 수 없습니다.

그래서 다음 방법을 사용할 수 있습니다.

my.cnf를 찾아 다음 내용을 추가하세요

# 添加慢查询日志
log_output=file
slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1

3. 느린 쿼리 로그를 확인하세요

어떤 쿼리 문이 실행 효율성이 낮은지 확인하려면 , 느린 쿼리 로그에서 정보를 얻을 수 있습니다. 오류 로그, 쿼리 로그와 마찬가지로 느린 쿼리 로그도 텍스트 파일 형식으로 저장되며 일반 텍스트 파일 보기 도구를 사용하여 볼 수 있습니다.

예제 1

MySQL 느린 쿼리 로그 기능을 활성화하고 시간을 설정합니다. 명령 및 실행 프로세스는 다음과 같습니다.

mysql> SET GLOBAL slow_query_log=ON;
Query OK, 0 rows affected (0.05 sec)

mysql> SET GLOBAL long_query_time=0.001;
Query OK, 0 rows affected (0.00 sec)

시연의 필요성으로 인해 시간이 더 걸리는 SQL 문으로 설정합니다. 0.001초 이상 실행하면 로그에 기록됩니다.

tb_student 테이블의 데이터를 쿼리하기 위한 SQL 문 및 실행 과정은 다음과 같습니다.

mysql> USE test;
Database changed
mysql> SELECT * FROM tb_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | Java   |
|  2 | MySQL  |
|  3 | Python |
+----+--------+
3 rows in set (0.08 sec)

따라서 느린 쿼리 로그의 내용 중 일부는 다음과 같습니다.

# Time: 2020-06-01T01:59:18.368780Z
# User@Host: root[root] @ localhost [::1]  Id:     3
# Query_time: 0.006281  Lock_time: 0.000755 Rows_sent: 2  Rows_examined: 1034
use test;
SET timestamp=1590976758;
SHOW VARIABLES LIKE 'slow_query%';

4 느린 쿼리 로그를 삭제합니다

.

느린 쿼리 로그와 일반 로그 삭제 방법 삭제 방법은 동일합니다. mysqladmin 명령을 사용하여 삭제할 수 있습니다. 수동으로 삭제할 수도 있습니다. mysqladmin 명령의 구문은 다음과 같습니다:

mysqladmin -uroot -p flush-logs

명령을 실행한 후 명령줄에 비밀번호를 입력하라는 메시지가 표시됩니다. 올바른 비밀번호를 입력하시면 삭제가 진행됩니다. 새로운 느린 쿼리 로그는 기존 쿼리 로그를 직접 덮어쓰므로 수동으로 삭제할 필요가 없습니다.

저속 쿼리 로그는 데이터베이스 관리자가 수동으로 삭제할 수도 있습니다. 삭제 후 MySQL 서비스를 다시 시작해야 합니다.

참고: 일반 쿼리 로그와 느린 쿼리 로그 모두 이 명령을 사용합니다. 이 명령을 실행하면 일반 쿼리 로그와 느린 쿼리 로그가 새 로그 파일에만 존재한다는 점에 유의하세요. . 오래된 느린 쿼리 로그 파일을 백업해야 하는 경우 먼저 이전 로그의 이름을 바꾼 다음 MySQL 서비스를 다시 시작하거나 mysqladmin 명령을 실행해야 합니다.

【관련 추천:
mysql 비디오 튜토리얼

위 내용은 mysql 느린 쿼리 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.