>  기사  >  데이터 베이스  >  MySQL에서 느린 쿼리 로그를 활성화하는 방법에 대한 자세한 설명

MySQL에서 느린 쿼리 로그를 활성화하는 방법에 대한 자세한 설명

小云云
小云云원래의
2018-01-17 09:40:451526검색

이 글에서는 MySQL에서 느린 쿼리 로그를 여는 방법을 주로 소개합니다. 편집자는 이것이 꽤 좋다고 생각합니다. 이제 공유하고 참고하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

1.1 소개

느린 쿼리 로그를 켜면 MySQL이 지정된 시간을 초과하는 쿼리를 기록할 수 있으며, 성능 병목 현상을 찾아 분석함으로써 데이터베이스 시스템의 성능을 더욱 최적화할 수 있습니다.

1.2 데이터베이스에 로그인하여 확인하세요


[root@localhost lib]# mysql –uroot

비밀번호가 설정되어 있지 않기 때문에 비밀번호가 있는 경우 mysql –uroot –p

1.2.1 MySql에 입력하세요. 느린 쿼리가 활성화되어 있는지 확인하세요


mysql> show variables like 'slow_query%';

+---------------------+--------------------------------------------+

| Variable_name    | Value                   |

+---------------------+--------------------------------------------+

| slow_query_log   | OFF                    |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+--------------------------------------------+

2 rows in set (0.00 sec)

매개변수 설명:

  1. slow_query_log 느린 쿼리 열기 상태 OFF 꺼짐 켜짐 켜짐

  2. slow_query_log_file 느린 쿼리 로그가 저장되는 위치(이 디렉터리에는 MySQL 실행 계정의 쓰기 가능한 권한이며 일반적으로 MySQL 데이터 저장소 디렉터리로 설정됩니다)

1.2.2 느린 쿼리 시간 초과 시간을 확인하세요


mysql> show variables like 'long%';

+-----------------+-----------+

| Variable_name  | Value   |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set (0.00 sec)

long_query_time 쿼리를 기록하는 데 걸리는 시간(초) ? 기본 10초가 1초로 변경되었습니다

1.3 수정 방법 1: (권장하지 않음)

방법 1: 장점: 일시적으로 느린 쿼리를 활성화하고 데이터베이스를 다시 시작할 필요가 없습니다. 단점: 다시 시작할 때 MySql 느린 쿼리가 실패합니다.

권장 사항: 비즈니스 요구에 따라 두 번째 방법을 사용하는 것이 좋습니다. 첫 번째 방법은 일시적으로 사용할 수 있습니다.

기본적으로 Slow_query_log 값은 OFF로, 느린 쿼리 로그가 비활성화되어 있으며 설정을 통해 활성화할 수 있음을 나타냅니다. 다음과 같이 Slow_query_log 값: 느린 쿼리 로그를 활성화할지 여부, 1은 켜짐을 의미하고 0은 꺼짐을 의미합니다.

1.3.1 느린 쿼리가 활성화되어 있는지 확인하세요


mysql> show variables like '%slow_query_log%';

+---------------------+--------------------------------------------+

| Variable_name    | Value                   |

+---------------------+--------------------------------------------+

| slow_query_log   | OFF                    |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+--------------------------------------------+

2 rows in set (0.01 sec)

입력 문을 수정하세요(다시 시작하면 무효화되므로 영구적으로 적용하려면 /etc/my.cnf에서 수정하는 것이 좋습니다)


mysql> set global slow_query_log=1;

Query OK, 0 rows affected (0.11 sec)

1.3.2 다시 보기


mysql> show variables like '%slow_query_log%';

+---------------------+--------------------------------------------+

| Variable_name    | Value                   |

+---------------------+--------------------------------------------+

| slow_query_log   | ON                     |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+--------------------------------------------+

2 rows in set (0.00 sec)

1.4 수정 방법 2: (권장)

MySql 느린 쿼리를 수정하세요. 찾아보세요

참고: 내 MySQL은 /etc/my.cnf(보통 여기) 경로로 컴파일됩니다.


[root@localhost log]# find / -type f -name "my.cnf"

/application/mysql-5.5.51/mysql-test/suite/rpl/my.cnf

/application/mysql-5.5.51/mysql-test/suite/federated/my.cnf

/application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/rpl/my.cnf

/application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/federated/my.cnf

/etc/my.cnf  ###(一般都是这里)

1.4.1.1 수정


[root@localhost log]# vim /etc/my.cnf

[mysqld]를 찾아

를 추가하세요.


slow_query_log =1

slow_query_log_file=/application/mysql/data/localhost-slow.log

long_query_time = 1

매개변수 설명:

  1. slow_query_log 느린 쿼리 열기 상태 1이 활성화됨

  2. slow_query_log_file 느린 쿼리 로그가 저장되는 위치

  3. long_query_time 쿼리를 기록하는 데 걸리는 시간(초) ? 기본 10초가 1초로 변경되었습니다

수정 후 MySQL 다시 시작

1.5 보기, 테스트

1.5.1.1 테스트 느린 쿼리 삽입


mysql> select sleep(2);

+----------+

| sleep(2) |

+----------+

|    0 |

+----------+

1 row in set (2.00 sec)

1.5.1.2 느린 쿼리 확인 log


[root@localhost data]# cat /application/mysql/data/localhost-slow.log

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

# Time: 170605 6:37:00

# User@Host: root[root] @ localhost []

# Query_time: 2.000835 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1496615820;

select sleep(2);

1.5.1.3 MySQL 명령을 통해 느린 쿼리 수 확인


mysql> show global status like '%Slow_queries%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Slow_queries | 1   |

+---------------+-------+

1 row in set (0.00 sec)

1.6 로그 분석 도구 mysqldumpslow

프로덕션 환경에서 로그를 수동으로 분석하려는 경우 , SQL을 찾고 분석하는 것은 분명히 힘든 작업입니다. MySQL은 로그 분석 도구 mysqldumpslow

관련 권장 사항:


MySQL 느린 쿼리 로그와 관련된 구성 및 사용

일반 쿼리 로그와 느린 쿼리 로그의 차이점 in MySQL

MySQL 최적화를 위한 MySQL 느린 쿼리 작업 소개

위 내용은 MySQL에서 느린 쿼리 로그를 활성화하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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