遅いログクエリ機能 スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステートメント内のクエリ ステートメントを記録することです。たとえば、クエリ SQL ステートメントの場合、しきい値を 1 秒に設定します。このクエリ ステートメントの実行時間が 1 秒を超えると、スロー クエリ構成ログに書き込まれます。 スロークエリは主に SQL ステートメントを最適化するために使用されます。 低速クエリ構成項目の説明 mysqlサービスにログインし、次のコマンドを使用します。 mysql> '%query%' のような変数を表示します。 +------------------------------+-----------------------------------------+ | 変数名 | 値 | +------------------------------+-----------------------------------------+ | binlog_rows_query_log_events | オフ | | ft_query_expansion_limit | 20 | | クエリキャッシュがある | はい | | 長いクエリ時間 | 10.000000 | | クエリ割り当てブロックサイズ | 8192 | | クエリキャッシュ制限 | 1048576 | | クエリ キャッシュの最小解像度単位 | 4096 | | クエリキャッシュサイズ | 33554432 | | クエリキャッシュタイプ | オフ | | query_cache_wlock_invalidate | オフ | | クエリ事前割り当てサイズ | 8192 | | slow_query_log | オフ | | slow_query_log_file | /usr/local/mysql/var/localhost-slow.log | +------------------------------+-----------------------------------------+ セット内の行数は 13 です (0.01 秒) ここでは、3 つの構成項目にのみ焦点を当てる必要があります。 1.スロークエリログ この構成項目は、スロー ログ クエリ機能を有効にするかどうかを決定します。構成値は ON または OFF です。 2. 遅いクエリログファイル この構成項目は、スロー ログ クエリの記録ファイルであり、手動で作成する必要があります。 3.長いクエリ時間 この構成項目は、スロー ログ クエリの時間しきい値を設定します。このしきい値を超えると、スロー ログが記録されます。構成値は 0 (すべての SQL ステートメントが記録されます) または > 0 (特定のしきい値) です。この構成項目は秒単位で、小数に設定できます。 4. インデックスを使用しないログクエリ この構成項目は、インデックスを使用しない SQL ステートメントを記録するために使用されます。 スロークエリの設定方法 スロークエリ機能を設定するには、2 つの方法があります。1 つは MySQL 設定ファイルを使用する方法で、もう 1 つは MySQL コマンドを使用する方法です。コマンド設定の過程で、set コマンドを使用すると設定項目は成功するものの、クエリがまだ設定されないことがあるため、設定ファイルを使用することをお勧めします。 1. 設定ファイルの設定 // [mysqld] を見つけて、その下に次のコードを追加します。 slow_query_log=オン slow_query_log_file=/usr/local/mysql/var/localhost-slow.log 長いクエリ時間=0 インデックスを使用しないログクエリ = 1 // 設定後、mysqlサービスを再起動します 2. コマンド設定を使用する // ここで必要な構成項目は 1 つだけであり、他の構成項目は次のように構成されます。mysql> set slow_query_log=ON; 設定後、MySQL スロー クエリ ログが正常に設定されているかどうかを確認します。 mysql> '%query%' のような変数を表示します。 +------------------------------+-----------------------------------------+ | 変数名 | 値 | +------------------------------+-----------------------------------------+ | binlog_rows_query_log_events | オフ | | ft_query_expansion_limit | 20 | | クエリキャッシュがある | はい | | 長いクエリ時間 | 0.000000 | | クエリ割り当てブロックサイズ | 8192 | | クエリキャッシュ制限 | 1048576 | | クエリ キャッシュの最小解像度単位 | 4096 | | クエリキャッシュサイズ | 33554432 | | クエリキャッシュタイプ | オフ | | query_cache_wlock_invalidate | オフ | | クエリ事前割り当てサイズ | 8192 | | slow_query_log | オン | | slow_query_log_file | /usr/local/mysql/var/localhost-slow.log | +------------------------------+-----------------------------------------+ セット内の行数は 13 です (0.01 秒) スローログレコードの表示方法 スロークエリを構成する前にサンプルデータファイルをインポートしたので、ここでは個別のデモンストレーションは行いません。 MySQL 公式データベースの例。次に、クエリ操作の実行を開始します。 mysql> city='Salala' の場合、city から * を選択します。 +---------+--------+-----------+---------------------+ | 都市 ID | 都市 | 国 ID | 最終更新日 | +---------+--------+-----------+---------------------+ | 444 | サララ | 71 | 2006-02-15 04:45:25 | +---------+--------+-----------+---------------------+ セット内の1行(0.01秒) この時点で、スロークエリログファイル /usr/local/mysql/var/localhost-slow.log を構成し、このファイルに上記のコマンド操作が記録されていることを確認しました。 # 時間: 2019-01-17T08:12:27.184998Z # ユーザー@ホスト: root[root] @ localhost [] Id: 4 # クエリ時間: 0.002773 ロック時間: 0.001208 送信行数: 1 検査行数: 600 タイムスタンプを1547712747に設定します。 city='Salala' の場合、city から * を選択します。 アピールファイルの構成内容の説明 1.時間 ログが記録された時刻 2.ユーザー@ホスト MySQL ログインユーザーとログインホストアドレス 3. Query_time行 1 番目はクエリ時間、2 番目はテーブル ロック時間、3 番目は返された行数、4 番目はスキャンされた行数です。 4.タイムスタンプを設定する これはMySQLクエリの時間です 5.SQL文 この行は非常に明白で、実行したSQL文を表しています。 要約する long_query_time=0 と設定しているので、すべての SQL ステートメントが記録されます。ここでは仮定します。 long_query_time=5 に設定しましたが、上記の 3 番目の項目で Query_time が 5 より大きくなっています。実際のプロジェクトで正常範囲内にない場合は、最適化する必要があります。もちろん、最適化する方法はたくさんあります。簡単なインデックス方式を使用して最適化してみましょう。 SQL文を最適化する 1. まず元のSQL文の実行構造を確認する mysql> explain select * from city where city='Salala'\G; ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: 都市 パーティション: NULL タイプ: すべて 可能なキー: NULL キー: NULL キー長さ: NULL 参照: NULL 行数: 600 フィルター: 10.00 追加: where の使用 セットに 1 行、警告 1 件 (0.00 秒) mysql> city(`city`) にインデックス idx_cityName を作成します。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) レコード: 0 重複: 0 警告: 0 SQL ステートメントがフルスキャンを実行していることがわかります。インデックスを使用して単純に最適化します。 2. インデックスを作成する mysql> city(`city`) にインデックス idx_cityName を作成します。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) レコード: 0 重複: 0 警告: 0 3. 再度分析して説明する mysql> explain select * from city where city='Salala'\G; ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: 都市 パーティション: NULL タイプ: ref 可能なキー: idx_cityName キー: idx_cityName キーの長さ: 152 参照: 定数 行数: 1 フィルター: 100.00 追加: NULL セットに 1 行、警告 1 件 (0.00 秒) インデックスを作成することで、この時点では 1 行のみがスキャンされ、インデックス スキャンが使用されるため、MySQL クエリの効率が大幅に向上することがわかりました。 MySQL のスロークエリの使用状況の概要 通常の開発では、スロークエリは MySQL を最適化する方法として非常に役立ちます。クエリ時間が長い SQL ステートメントの一部を記録し、それらを分析して SQL クエリ ステートメントを最適化します。ただし、スロー ログ クエリを有効にすると、SQL クエリの関連レコードがディスク I/O を介してディスク ファイルに書き込まれるため、ディスク I/O の読み取りと書き込みが増加します。したがって、この機能は本番環境ではなく、開発環境とテスト環境で使用します。 スローログクエリツール スロー ログ クエリ ファイルが新しいほど、含まれるコンテンツが多くなります。分析に対するプレッシャーが大きければ大きいほど、迅速な分析を実現するために何らかのツールを使用する必要が出てきます。私はまだこれらのツールに十分精通していません。この種のツールを紹介する別の記事を後で書く予定です。ここではツール名だけをリストします。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: uniappの無痛トークンリフレッシュ方法の詳細な説明
>>: CentOS8 yum/dnfで国内ソースを設定する方法
ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...
無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...
Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。ス...
最近のプロジェクトに取り組んでいるとき、下の図に示すように、画像を参照すると常に下部に空白スペースが...
最近、Oracle は Java 14 (または Oracle JDK 14) の一般公開を発表しま...
目次1. 概念の素早い理解: 1. コンポーネント間でデータを共有する方法: 2. vuex とは何...
テーブルが広い場合は、あふれてしまう可能性があります。たとえば、左と右の 2 つの div がありま...
目次Dockerコンテナのデータ量データボリュームの使用方法1: コマンド-vを使用して直接マウント...
月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...
通常、Linux プログラムを開発する場合、次の 2 つのオプションがあります。 Linux上で直接...
1. HTML送信ボタンと下部ボタンの基本構文構造1. HTML送信ボタン入力タグで type=&...
nginx をリバース プロキシとして使用する場合、リクエストをそのまま次のサービスに転送するだけで...
導入EXISTS は、サブクエリが少なくとも 1 行のデータを返すかどうかを確認するために使用されま...
今回は、コンピューターや携帯電話用の rtmp ライブ ブロードキャスト サーバーを設定し、ライブ ...