スローログクエリ
MySQLのスローログクエリは、MySQLの応答時間が閾値を超えたステートメントをスローログに記録します。 。 long_query_time のデフォルト時間は 10 です。これは、10 を超えるステートメントを実行することを意味します。
たとえば、SQL が 5 秒以上実行された場合、MySQL は 5 秒以上の SQL を記録し、包括的な分析を行うことができます。
デフォルトでは、MySQL データベースはスロークエリログを有効にしていないため、このパラメータを手動で設定する必要があります。もちろん、チューニングに必要でない場合は、ロギングが遅いとパフォーマンスにある程度の影響が出る可能性があるため、通常はこのパラメータを有効にすることはお勧めできません。
有効かどうか
#查看是否开启show variables like '%slow_query_log%';#开启set global slow_query_log = 1;
ログイン後にコピー
set global throw_query_log=1 を使用してスロー クエリ ログを有効にすると、現在のデータベースにのみ有効になり、MySQL が再起動されると無効になります。これを永続的に有効にしたい場合は、構成ファイル my.cnf を変更する必要があります。
低速クエリしきい値時間を設定した後、値の変更が表示されない場合があります。つまり、変更された値を確認するには、再接続するか、新しいセッションを開く必要があることに注意してください。
show variables like '%long_query_time%'
ログイン後にコピー
ログイン後にコピー
または、接続を再度開かずに次のコマンドを使用することもできます:
show variables like '%long_query_time%'
ログイン後にコピー
ログイン後にコピー
どの SQL がログに記録されるかは、long_query_time によって制御されます。デフォルトでは、long_query_time の値は 10 秒です。時間はlong_query_timeと正確に等しい場合、記録されません。つまり、mysqlではlong_query_time以上ではなく、より大きいと判断されます。
次のステートメントを使用してテストを実行できます
show variables like '%long_query_time%';
ログイン後にコピー
long_query_time を 3 秒に設定すると、このステートメントが記録されます。
遅いログの数を表示する
ログ分析ツール mysqldumpslow
運用環境で手動でログを分析し、SQL を見つけて分析したい場合、MySql が提供するログ分析は明らかに面倒な作業です。 mysqldumpslow ツール。
例:
show global status like '%slow_queries%'
ログイン後にコピー
#得到返回记录集最多的10个SQL
Mysqldumpslow –s r –t 10 D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log#得到访问次数最多的10个SQL
Mysqldumpslow –s c –t 10 D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log#得到按照时间排序的前10条里面含有左连接的查询
Mysqldumpslow –s t –t 10 –g “left join” D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log#另外建议在使用这些命令时结合|和more使用,否则可能出现爆破情况
Mysqldumpslow –s r –t 10 D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log|more
ログイン後にコピー
SQL 分析には show profile を使用します
show profile コマンドは、現在のセッションでのステートメント実行のリソース消費を分析できます。 SQL に時間のかかるボトルネックを見つけるために使用されます。デフォルトではオフになっており、過去 15 回の実行結果が保存されます。
有効かどうかを確認します (「profiling」などの変数を表示します)
関数を有効にします (set profiling = on;)
有効にすると、その後の SQL の実行を記録できます。次に、show profiles を使用して結果を表示します:
コマンド (show profile cpu, block io for query 3;) を通じて特定の SQL ステートメントの実行をさらに分析します。たとえば、SQL No. 3 の状況を分析します。下に。
Show profile の背後にあるいくつかのパラメータ:
All: すべてのオーバーヘッド情報を表示
- Block io: ブロック IO 関連のオーバーヘッドを表示
- コンテキスト スイッチ: コンテキスト スイッチング関連のオーバーヘッド
CPU: CPU関連のオーバーヘッドを表示します- Memory: メモリ関連のオーバーヘッドを表示します
- Source: source_function、source_file、source_lineに関連するオーバーヘッド情報を表示します
- グローバルクエリログ
(運用環境では決してオンにしないでください) 、実行されたすべての SQL ステートメントを表示)
Set コマンド:
参数含义
s: 表示按照何种方式排序
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
t:返回前面多少条的数据
g:后面搭配一个正则表达式
ログイン後にコピー
その後、mysql によって実行された SQL ステートメントは mysql.genearl_log テーブルに記録され、次のコマンドで表示できます:
set global general_log = 1;#以表的形式输出set global log_output = ‘TABLE’
ログイン後にコピー
構成ファイルで次のように設定します:
select * from mysql.general_log;
ログイン後にコピー
以上がMySQL を使用して SQL に時間のかかる問題を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。