ホームページ  >  記事  >  データベース  >  MySQLチューニング用プロファイルの使い方

MySQLチューニング用プロファイルの使い方

不言
不言転載
2018-11-23 17:28:223564ブラウズ

この記事の内容は、Mysql チューニング プロファイルの使用方法についてです。必要な方は参考にしていただければ幸いです。

  1. mysql パフォーマンス分析を行う場合、最も一般的に使用される 3 つの方法があります:

    (1) 遅いクエリ (問題のある SQL の分析)
    (2) ) Explain (mysql がインデックスを使用して選択ステートメントと接続テーブルを処理する方法を示します。より適切なインデックスを選択し、より最適化されたクエリ ステートメントを作成するのに役立ちます)
    (3) プロファイル (SQL クエリの実行にかかる時間)、およびCPU/メモリの使用量、実行中にシステムロックやテーブルロックにかかる時間などを参照してください)

  2. この章では、主にプロファイルの使用方法の概要を説明します。特定の SQL ステートメントのパフォーマンス分析。

  3. プロファイリングは、mysql5.0.3 以降でのみ利用可能です。ただし、mysql5.7 以降、プロファイル情報は徐々に廃止され、mysql はパフォーマンス スキーマの使用を推奨します。

  4. profileこのツールは、SQL の実行ステータス、システム ロックとテーブル ロックにかかる時間などをクエリするために使用できます。 I/O 消費量とテーブル ロックを特定することは非常に重要です。ステートメント の CPU 消費量。 (SQL ステートメントの実行によって消費される 2 つの最大のリソースは IO と CPU)

プロファイル ツール

  1. を使用して、独自の mysql バージョンを表示します。

    mysql> select version(); 
    +------------+
    | version()  |
    +------------+
    | 5.6.35-log |
    +------------+
  2. プロファイル機能が有効かどうかを確認します (profiling=on は有効を意味します):

    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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。