>  기사  >  데이터 베이스  >  MySQL 튜닝에 프로필을 사용하는 방법

MySQL 튜닝에 프로필을 사용하는 방법

不言
不言앞으로
2018-11-23 17:28:223589검색

이 기사의 내용은 Mysql 튜닝 프로필을 사용하는 방법에 대한 것입니다. 특정 참고 가치가 있으므로 도움이 될 수 있습니다.

  1. mysql 성능 분석을 할 때 가장 일반적으로 사용되는 세 가지 방법이 있습니다:

    (1) 느린 쿼리(문제가 있는 SQL 분석)
    (2) 설명(mysql이 인덱스를 사용하여 선택 명령문 및 더 나은 인덱스를 선택하고 더 최적화된 쿼리문을 작성하는 데 도움이 될 수 있습니다)
    (3) 프로필(SQL 쿼리를 실행하는 데 걸리는 시간, 실행 중 CPU/메모리 사용량, 시스템 잠금, 테이블 확인) take to lock 등)

  2. 이 장은 주로 특정 SQL 문에 대한 성능 분석을 수행하는 데 사용되는 프로필에 대한 간략한 개요입니다.

  3. 프로파일링은 mysql5.0.3 버전부터만 가능합니다. 그러나 mysql5.7 이후에는 프로필 정보가 점차 폐기될 예정이므로 mysql에서는 성능 스키마 사용을 권장합니다.

  4. profile 이 도구는 SQL 실행 상태, 시스템 잠금 및 테이블 잠금 소요 시간 등을 쿼리하는 데 사용할 수 있습니다. 문의 I/O 소비 및 CPU 소비를 찾는 것이 매우 중요합니다. (SQL 문 실행에 소비되는 가장 큰 두 가지 리소스는 IO와 CPU입니다.)

프로필 도구

  1. 를 사용하여 자신의 mysql 버전을 확인하세요.

    mysql> select version(); 
    +------------+
    | version()  |
    +------------+
    | 5.6.35-log |
    +------------+
  2. 프로필 기능이 켜져 있는지 확인하세요(프로파일링= 켜짐을 의미함) :

    mysql> show variables like '%profil%';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | have_profiling        | YES  |
    | profiling              | OFF    |
    | profiling_history_size | 15    |
    +------------------------+-------+
  3. 프로필 열기:

    mysql> set profile=1;
  4. 프로필 열기 후 분석할 SQL 문 실행:

    mysql> select t1.*,t2.action from pre_forum_thread as t1
    left join 
    (select a.* from pre_forum_threadmod as a,(select tid,max(dateline) as dateline from pre_forum_threadmod group by tid) as b
    where a.tid=b.tid and a.dateline=b.dateline) as t2
    on t1.tid=t2.tid
    where t1.displayorder>=0 and t1.fid in (47,49) and t1.tid > 100318 
    and (t1.authorid =7683017 or t2.action<>'DWN' or t2.action is null )
    order by t1.dateline desc limit 20;
  5. 생성된 프로필 정보 보기:

    mysql> show profiles;
    +----------+------------+--------------------------------------------------------------------------------------------------------+
    | Query_ID | Duration  | Query                                                                                                  |
    +----------+------------+--------------------------------------------------------------------------------------------------------+
    |        1 | 1.37183777 | select t1.*,t2.action from pre_forum_thread as t1  |
    |        2 | 0.00078796 | show columns from `bbs`.`t2` |
    |        3 | 0.00150425 | show columns from `bbs`.`pre_forum_thread` |
    +----------+------------+--------------------------------------------------------------------------------------------------------+
  6. 비용 가져오기 지정된 쿼리문 중:

    mysql> show profile for query 2; 
    +----------------------+----------+
    | Status              | Duration |
    +----------------------+----------+
    | starting            | 0.000147 |
    | checking permissions | 0.000023 |
    | Opening tables      | 0.000047 |
    | init                | 0.000081 |
    | System lock          | 0.000031 |
    | optimizing          | 0.000034 |
    | statistics          | 0.001650 |
    | preparing            | 0.000046 |
    | executing            | 0.000018 |
    | Sending data        | 2.460588 |
    | end                  | 0.000041 |
    | query end            | 0.000019 |
    | closing tables      | 0.000022 |
    | freeing items        | 0.000055 |
    | cleaning up          | 0.000085 |
    +----------------------+----------+
  7. 프로필 닫기:

    mysql> set profiling=0;
  8. 관련 특정 매개변수:

    type: 
       ALL                --显示所有的开销信息 
     | BLOCK IO          --显示块IO相关开销 
     | CONTEXT SWITCHES  --上下文切换相关开销 
     | CPU                --显示CPU相关开销信息 
     | IPC                --显示发送和接收相关开销信息 
     | MEMORY            --显示内存相关开销信息 
     | PAGE FAULTS        --显示页面错误相关开销信息 
     | SOURCE            --显示和Source_function,Source_file,Source_line相关的开销信息 
     | SWAPS              --显示交换次数相关开销的信息 
    
    例如,想要查看cpu和io开销可以执行命令:
    mysql> SHOW profile CPU,BLOCK IO  FOR query 2;

요약

  1. 일반 단순 프로세스:

    (1)set profiling=1; //打开profile分析
    (2)run your sql1;
    (3)run your sql2;
    (4)show profiles;    //查看sql1,sql2的语句分析
    (5)SHOW profile CPU,BLOCK IO io FOR query 1; //查看CPU、IO消耗
    (6)set profiling=0; //关闭profile分析

위 내용은 MySQL 튜닝에 프로필을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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