この記事の内容は、Mysql チューニング プロファイルの使用方法についてです。必要な方は参考にしていただければ幸いです。
mysql パフォーマンス分析を行う場合、最も一般的に使用される 3 つの方法があります:
(1) 遅いクエリ (問題のある SQL の分析)
(2) ) Explain (mysql がインデックスを使用して選択ステートメントと接続テーブルを処理する方法を示します。より適切なインデックスを選択し、より最適化されたクエリ ステートメントを作成するのに役立ちます)
(3) プロファイル (SQL クエリの実行にかかる時間)、およびCPU/メモリの使用量、実行中にシステムロックやテーブルロックにかかる時間などを参照してください)
この章では、主にプロファイルの使用方法の概要を説明します。特定の SQL ステートメントのパフォーマンス分析。
プロファイリングは、mysql5.0.3 以降でのみ利用可能です。ただし、mysql5.7 以降、プロファイル情報は徐々に廃止され、mysql はパフォーマンス スキーマの使用を推奨します。
profileこのツールは、SQL の実行ステータス、システム ロックとテーブル ロックにかかる時間などをクエリするために使用できます。 I/O 消費量とテーブル ロックを特定することは非常に重要です。ステートメント の CPU 消費量。 (SQL ステートメントの実行によって消費される 2 つの最大のリソースは IO と CPU)
を使用して、独自の mysql バージョンを表示します。
mysql> select version(); +------------+ | version() | +------------+ | 5.6.35-log | +------------+
プロファイル機能が有効かどうかを確認します (profiling=on は有効を意味します):
mysql> show variables like '%profil%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | have_profiling | YES | | profiling | OFF | | profiling_history_size | 15 | +------------------------+-------+
プロファイルを有効にする:
mysql> set profile=1;
プロファイルを開いた後、分析する 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;
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` | +----------+------------+--------------------------------------------------------------------------------------------------------+
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 | +----------------------+----------+
mysql> set profiling=0;
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)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 サイトの他の関連記事を参照してください。