以下の操作デモンストレーションはすべて MySQL バージョン 5.6.36 に基づいています。 仕事でよくこの問題に遭遇します。MySQL データ アクセスは大量のエネルギーを消費するため、SQL の観点から最適化したいと考えています。 R&D 担当者は、どの SQL ステートメントが最も頻繁に実行されているかを確認できるかどうかをよく尋ねます。回答: いいえ、現在実行中の SQL とスロー ログに記録されている SQL のみを表示できます。パフォーマンス上の理由から、一般的なログは通常は有効になっていません。スロー ログではパフォーマンスの問題がある一部の SQL ステートメントを見つけることができますが、一般ログではすべての SQL ステートメントが記録されます。ただし、実稼働中の MySQL ではパフォーマンスの問題が発生することがあります。一般ログを短時間オンにして SQL 実行ステータスを取得することは、MySQL のパフォーマンスの問題のトラブルシューティングと分析に非常に役立ちます。または、プログラムがどの SQL ステートメントを実行したかは不明ですが、エラーのトラブルシューティングを行う必要がある場合もあります。原因が見つからない場合は、一時的に一般ログを有効にすることができます。 MySQL 5.0 では、スロー ログまたは一般ログを有効にするには、システムを再起動する必要があります。MySQL 5.1.6 以降では、一般クエリ ログとスロー クエリ ログがファイルまたはデータベース テーブルへの書き込みをサポートするようになりました。さらに、ログの有効化と出力モードの変更は、グローバル レベルで動的に変更できます。 一般ログを開く方法は多数あります。 以下は簡単な紹介とデモンストレーションです。 方法1: my.cnf設定ファイルを変更する [root@git-server ~]# grep general_log /etc/my.cnf 一般ログ = 1 一般ログファイル = /tmp/general.log mysql を再起動します。この操作は永続的な効果と同等です。もちろん、この方法は本番環境で使用することはできません。 MySQL を再起動すると MySQL サービスが中断されるためです。同時に、general.log は MySQL に関するすべての DDL および DML ステートメントを記録します。これは大量のリソースを消費します。通常、MySQL の問題のトラブルシューティングを支援するために、数分間一時的に開かれます。その後は閉店となります。 方法2: MySQLコマンドコンソールでの操作 このファイルにアクセスする権限を持つのはルートユーザーのみです デフォルトではこのログはオフになっています。 mysql> '%general%' のようなグローバル変数を表示します。 +------------------+---------------------------------+ | 変数名 | 値 | +------------------+---------------------------------+ | 一般ログ | オフ | | 一般的なログファイル | /data/mysql/data/git-server.log | +------------------+---------------------------------+ セット内の 2 行 (0.00 秒) マイSQL> 場合によっては、MySQL のグローバル general_log を一時的に有効にする必要があります。MySQL にログインし、ログ パスを直接設定して general_log を有効にすることができます。 mysql> グローバル general_log_file を '/tmp/general_log' に設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> グローバル general_log をオンに設定します。 クエリは正常、影響を受けた行は 0 行 (0.02 秒) mysql> '%general%' のようなグローバル変数を表示します。 +------------------+------------------+ | 変数名 | 値 | +------------------+------------------+ | general_log | オン | | 一般ログファイル | /tmp/general_log | +------------------+------------------+ セット内の 2 行 (0.00 秒) マイSQL> [root@git-server ~]# tailf /tmp/general_log 180717 22:55:51 2 クエリ表示データベース 180717 22:56:04 2 クエリ SELECT DATABASE() 2 初期化DBテスト 180717 22:56:14 2 クエリ選択 * from student3 使用後は、直接グローバルgeneral_log=offに設定してこのログを閉じることができます。 方法3: MySQLデータベースのgeneral_logテーブルにログを保存する mysql> グローバル log_output='table' を設定します。 mysql> グローバル general_log をオンに設定します。 mysql> mysql を使用します。 mysql> test.student3 から * を選択します。 +----+--------------+------------+--------+------+ | id | 教師名 | 教師id | 名前 | 性別 | +----+--------------+------------+--------+------+ | 1 | 華華| 1 | サナン| 女性| | 4 | サンサン| 2 | サナン| 女性| | 6 | ビビ | 3 | サナン | 女性 | +----+--------------+------------+--------+------+ セット内の 3 行 (0.00 秒) mysql> general_log から * を選択します。 | 2018-07-17 23:00:12 | root[root]@localhost [] | 2 | 1132333306 | クエリ | test.student3 から * を選択 /tmp/general.log の情報を確認すると、どの SQL クエリ/更新/削除/挿入がより頻繁に行われているかを大まかに把握できます。たとえば、一部のテーブルは頻繁に変更されないものの、クエリ量が多いため、キャッシュできます。プライマリ データベースとスタンバイ データベース間の待機時間が長くならないテーブルの場合、読み取りをスタンバイ データベースに配置できます。 以上が今回ご紹介したgeneral_logログに関する豆知識です。123WORDPRESS.COMをご愛読、応援いただきありがとうございました。 以下もご興味があるかもしれません:
|
<<: Vue プラグイン エラー: このページで Vue.js が検出されました。問題は解決しました
>>: Centos8 (最小インストール) Python3.8+pip のインストール方法に関するチュートリアル
このブログは、MySQL8.0.15 を正常にインストールしたことを思い出すために書きました。以前は...
インデックスを追加すると、クエリの効率が向上します。インデックスを追加するということは、ドキュメント...
この記事では、参考までにMySQL 8.0.15のインストールと設定のグラフィックチュートリアルを紹...
注: Web 開発では、フォームに autocomplete="off" を追加...
最近、IM を実行するときに、これらの 3 つのキーワードを同時に使用したときに問題が発生しました。...
1. 目的この記事を通じて、誰もがフロートをクリアする原理と方法を理解し、最終的にこの記事が最良であ...
目次Linux - ファイル記述子、ファイルポインタ、インデックスノード1. Linux - ファイ...
目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...
目次1. props/$emit導入コードサンプル2.Vスロット導入コードサンプル3.$refs/ ...
PHP のコンパイル時に -enable-gd-jis-conv オプションを追加することで発生する...
実際のプロジェクト開発では、多数のクエリや挿入、特にマルチスレッド挿入など、データベースに大きな負荷...
目次1. サービスの開始と停止の手順1.1 Windows での MySQL 5.7 の公式 MSI...
目次制御されていないコンポーネント制御コンポーネント知らせ結論は制御されていないコンポーネントフォー...
1. v-forでは常に:keyを使用するデータを操作する必要があるときにプログラムを一定かつ予測可...
序文: MySQL で最も一般的に使用されるアーキテクチャは、マスター スレーブ レプリケーションで...