> 데이터 베이스 > MySQL 튜토리얼 > 하위 SQL을 최적화하고 포지셔닝하는 두 가지 방법에 대한 자세한 설명

하위 SQL을 최적화하고 포지셔닝하는 두 가지 방법에 대한 자세한 설명

伊谢尔伦
풀어 주다: 2017-06-28 14:03:41
원래의
1299명이 탐색했습니다.

slowquerieslog를 통해 실행 효율성이 낮은 SQL 문을 찾습니다. --log-slow-queries[=file_name] 옵션으로 시작하면 mysqld는 실행 시간이 long_query_time 초를 초과하는 모든 SQL 문이 포함된 로그 파일을 작성합니다. , 이 로그 파일을 확인하여 실행 효율성이 낮은 SQL 문을 찾으세요

mysql 효율성 최적화에 대해 일반적으로 다음 두 가지 방법으로 실행 효율성이 낮은 SQL 문을 찾습니다.

느린 쿼리 로그를 통해 실행 효율성이 낮은 SQL 문을 찾습니다. --log-slow-queries[=file_name] 옵션으로 시작하면 mysqld는 실행 시간이 long_query_time 초를 초과하는 모든 SQL 문을 포함하는 로그 파일을 작성합니다. 이 로그 파일을 보면 효율적인 SQL이 가능합니다.

느린 쿼리 로그는 쿼리가 완료된 후에 기록됩니다. 따라서 애플리케이션에서 실행 효율성 문제를 반영하는 경우, 느린 쿼리 로그를 쿼리하면 문제를 찾을 수 없습니다. 현재 진행 중인 MySQL 스레드를 보려면, 스레드 상태 및 테이블 잠금 여부 등을 포함하여 SQL 실행을 실시간으로 확인하고 일부 잠금 테이블 작업을 최적화할 수 있습니다.

느린 쿼리 로그를 통해 실행 효율성이 낮은 SQL 문을 찾는 방법을 설명하기 위해 아래 예를 들어보겠습니다.

느린 쿼리 로그 활성화, 구성 예:

log-slow-queries

in my.cnf configuration 위 구성 항목을 추가하고 mysql 서비스를 다시 시작하면 mysql 느린 쿼리 기능이 적용됩니다. 느린 쿼리 로그는 DATADIR 매개변수(데이터 디렉터리)에 지정된 경로에 기록됩니다. 기본 파일 이름은 host_name-slow.log입니다.

오류 로그 및 쿼리 로그와 마찬가지로 느린 쿼리 로그 기록의 형식도 일반 텍스트이므로 직접 읽을 수 있습니다. 다음 예에서는 느린 쿼리 로그를 설정하고 읽는 과정을 보여줍니다.

(1) 먼저 long_query_time 값을 쿼리합니다.

mysql> show variables like 'long%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
로그인 후 복사

(2) 테스트를 용이하게 하기 위해 느린 쿼리 시간이 5초로 수정됩니다.

mysql> set long_query_time=5;
Query OK, 0 행이 영향을 받음(0.02초)

(3) 다음 두 쿼리 문을 순차적으로 실행합니다.

첫 번째 쿼리는 쿼리 시간이 5초 미만이므로 느린 쿼리 로그에 표시되지 않습니다.

mysql> select count(*) from order2008;
+----------+
| count(*) |
+----------+
| 208 |
+----------+
1 row in set (0.00 sec)
로그인 후 복사

두 번째 쿼리는 쿼리 시간이 5초보다 크므로 느린 쿼리 로그에 표시됩니다.

mysql> select count(*) from t_user;
+----------+
| count(*) |
+----------+
| 6552961 |
+----------+
1 row in set (11.07 sec)
로그인 후 복사

( 4) 느린 쿼리 로그를 확인합니다.

[root@localhost mysql]# more localhost-slow.log
# Time: 081026 19:46:34
# User@Host: root[root] @ localhost []
# Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961
select count(*) from t_user;
로그인 후 복사

위 로그에서 쿼리 시간이 5초를 초과하는 SQL을 찾을 수 있지만, 쿼리 시간이 5초 미만인 SQL은 이 로그에 나타나지 않습니다.
느린 쿼리 로그에 기록이 많은 경우 mysqldumpslow 도구(MySQL 클라이언트 installation에 포함되어 있음)를 사용하여 느린 쿼리 로그를 분류하고 요약할 수 있습니다. 다음 예에서는 로그 파일 mysql_master-slow.log가 분류 및 요약되어 요약된 summary결과만 표시됩니다.

[root@mysql_master mysql_data]# mysqldumpslow mysql_master-slow.log
Reading mysql slow query log from mysql_master-slow.log
Count: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@mysql_master
select count(N) from t_user;
로그인 후 복사

SQL 텍스트는 완전히 동일하지만 변수다른 문인 mysqldumpslow는 자동으로 통계를 수행하는 동일한 명령문으로 간주되며 변수 값은 N으로 대체됩니다. 이 통계 결과는 느린 쿼리 로그를 읽는 사용자의 효율성을 크게 높이고 시스템의 SQL 병목 현상을 빠르게 찾을 수 있습니다.

참고: 느린 쿼리 로그는 애플리케이션에서 성능 문제가 있는 SQL을 찾는 데 매우 유용합니다. 일반적인 상황에서는 이 로그를 열고 분석을 자주 확인하는 것이 좋습니다.

위 내용은 하위 SQL을 최적화하고 포지셔닝하는 두 가지 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿