mysql에서 느린 쿼리는 느리게 실행되어 로그에 기록되는 SQL 문을 의미하며, "long_query_time" 매개변수에 설정된 시간 임계값을 초과하는 SQL 문 쿼리를 실행하는 것을 의미합니다. 느린 쿼리는 느린 쿼리 로그에 기록되며, 느린 쿼리 로그를 통해 최적화를 위한 실행 효율성이 낮은 쿼리 문을 확인할 수 있습니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
느린 쿼리는 이름에서 알 수 있듯이 느리게 실행되는 SQL 문을 로그에 기록한다는 의미입니다. 이는 mysql이 long_query_time 매개변수에 설정된 시간 임계값을 초과하는 모든 SQL 문 쿼리를 기록한다는 의미입니다.
느린 쿼리는 느린 쿼리 로그에 기록됩니다. 느린 쿼리 로그를 통해 어떤 쿼리문이 최적화를 위해 실행 효율성이 낮은지 확인할 수 있습니다. 이 로그는 SQL 문 최적화에 큰 도움을 줄 수 있습니다.
기본적으로 느린 쿼리 로그는 꺼져 있습니다. 느린 쿼리 로그 기능을 사용하려면 먼저 느린 쿼리 로그 기능을 활성화해야 합니다.
느린 쿼리를 구성한 후 다음을 포함하여 정규 SQL
을 기록합니다:
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 -uroot -p flush-logs
명령을 실행한 후 명령줄에 비밀번호를 입력하라는 메시지가 표시됩니다. 올바른 비밀번호를 입력하시면 삭제가 진행됩니다. 새로운 느린 쿼리 로그는 기존 쿼리 로그를 직접 덮어쓰므로 수동으로 삭제할 필요가 없습니다.
저속 쿼리 로그는 데이터베이스 관리자가 수동으로 삭제할 수도 있습니다. 삭제 후 MySQL 서비스를 다시 시작해야 합니다.
참고: 일반 쿼리 로그와 느린 쿼리 로그 모두 이 명령을 사용합니다. 이 명령을 실행하면 일반 쿼리 로그와 느린 쿼리 로그가 새 로그 파일에만 존재한다는 점에 유의하세요. . 오래된 느린 쿼리 로그 파일을 백업해야 하는 경우 먼저 이전 로그의 이름을 바꾼 다음 MySQL 서비스를 다시 시작하거나 mysqladmin 명령을 실행해야 합니다.【관련 추천:mysql 비디오 튜토리얼
위 내용은 mysql 느린 쿼리 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!