MySQL でスロークエリログを有効にして分析するにはどうすればよいですか?
この記事では、MySQL のスロー クエリを理解し、スロー クエリ ログを有効にする方法を紹介し、スロー クエリを分析する方法を説明します。
Mysql には長期クエリの遅い記録を記録できる機能があり、具体的な時間の長さは自分で設定できますが、遅いクエリは必ずしも悪い SQL であるわけではありません。また、他のクエリに影響を与えるか、システム リソースの制限によって引き起こされる、一般的に使用されるパフォーマンス分析ツールでもあります。 [関連する推奨事項: mysql ビデオ チュートリアル ]
MySQL のスロー クエリ ログは、long_query_time
と min_examined_row_limit
によって制御されます。前者は、クエリにコストがかかるかどうかを意味します。この時間が秒数を超えると、スロー クエリ ログが有効になっている場合、MySQL サーバーはこれをスロー クエリ ログ ファイルに記録します。
スロー クエリ ログを有効にする
MySQL でスロー クエリ ログを有効にするには、以下の手順に従ってください:
まずスロー クエリを確認します。 MySQL へのログイン クエリのステータス。
MariaDB [(none)]> show variables like '%slow%'; +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ | Variable_name | Value | +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ | log_slow_admin_statements | ON | | log_slow_disabled_statements | sp | | log_slow_filter | admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk | | log_slow_rate_limit | 1 | | log_slow_slave_statements | ON | | log_slow_verbosity | | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | hxl-slow.log | +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ 9 rows in set (0.001 sec)
まず、スロー クエリ ログが有効かどうかを表す slow_query_log
のステータスを確認します。値は、無効にする場合は 0 または OFF、有効にする場合は 1 または ON です。ログ出力の宛先は、log_output
システム変数によって制御されます。値が NONE
の場合、スロー クエリ ログが有効になっている場合でも、ログはログに書き込まれません。 log_output
変数の値は次のとおりです:
- TABLE: (デフォルト) 一般的なクエリを
mysql.general_log
テーブルに書き込み、一般的なクエリを書き込みます。テーブルへのクエリmysql.slow_log
遅いクエリの作成。 - FILE: 一般的なスロー クエリ ログをファイル システムに書き込みます。
- NONE – ログ記録を無効にします。
また、general_log_file
および slow_query_log_file
変数は、クエリ ログ ファイルとスロー クエリ ログ ファイルの名前を表します。これらの変数は、サーバーの起動時または実行時に設定できます。
スロー クエリ ログの開始
MySQL ではスロー クエリ ログ機能がデフォルトでオフになっているため、この機能をオンにするには、 を設定する必要があります。以下に示すように、slow_query_log
を ON にします。
SET GLOBAL slow_query_log = 1;
記録期間を設定します
long_query_time
変数は、以下に示すように、この値を超えた実行時間のみが記録されることを示します。時間を 5 秒に設定すると、デフォルトは 10 秒になり、最小値は 0 になります。
SET GLOBAL long_query_time = 5;
出力場所の変更
デフォルトでは、スロー クエリ ログ ファイルは /var/lib/mysql/hostname-slow.log# にあります。 ##、
slow_query_log_file 変数を使用して別の場所を設定することもできます。
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
スロー クエリ ログをテーブルに書き込む
スロー クエリ ログはslow_log テーブルに書き込むこともできます。その方法は次のとおりです。前述の
log_output システム変数を
TABLE に変更します。操作は次のとおりです:
SET GLOBAL log_output='TABLE';
スロー クエリ ログ関連の変数
- slow_query_log - 启用/禁用慢查询日志
- log_output - 如何写入输出
- slow_query_log_file - 慢查询日志文件的名称
- long_query_time - 定义慢查询的时间(以秒/微秒为单位)
- log_queries_not_using_indexes - 是否记录不使用索引的查询
- log_slow_admin_statements - 是否记录某些管理语句
- log_slow_disabled_statements - 不应记录在慢查询日志中的语句类型
- min_examined_row_limit - 查询必须检查的最小行数才能变慢
- log_slow_rate_limit - 允许记录一部分慢查询
- log_slow_verbosity - 日志中的详细信息量
- log_slow_filter - 限制要记录的查询
分析慢查询
日志记录后,我们还需要分析这些日志,找出影响系统的查询,MySQL提供了一个名为mysqldumpslow的工具,可以简单的显示结果,只需要把日志路径传递给他即可,如下:
# mysqldumpslow -a mysql-slow.log Reading mysql slow query log from mysql-slow.log Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=21.0 (21), Rows_examined=21.0 (21), Rows_affected=0.0 (0), root[root]@localhost show databases Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=2.0 (2), Rows_examined=2.0 (2), Rows_affected=0.0 (0), root[root]@localhost select * from users Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost select @@version_comment limit 1 Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
他的参数如下
-
-s ,按照什么方式起来排序。默认at,也就是按照平均查询时间来排序。都是按照倒序排列。
al: average lock time 平均锁定时间
ar: average rows sent 平均返回行数
at: average query time 平均查询时间
c: count 总执行次数
l: lock time 总锁定时间
r: rows sent 总返回行数
t: query time 总查询时间
-t ,show the top n queries,显示前多少名的记录
-a ,默认不开启这个选项。mysqldumpslow将相似的SQL的值(字符串或者数字)替换为N,开启该选项,则显示真实值。不开启该选项,有点类似于Oracle的绑定变量的记录。\
-g ,类似于grep命令,过滤出需要的信息。如,只查询A表的慢查询记录。\
-l ,总时间中包含锁定时间
原文地址:https://juejin.cn/post/6993221989175394311
更多编程相关知识,请访问:编程视频!!
以上がMySQL でスロークエリログを有効にして分析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

PHPMyAdminは単なるデータベース管理ツールではなく、MySQLを深く理解し、プログラミングスキルを向上させることができます。コア関数には、CRUDおよびSQLクエリの実行が含まれ、SQLステートメントの原則を理解することが重要です。高度なヒントには、データのエクスポート/インポートと許可管理が含まれ、深いセキュリティの理解が必要です。潜在的な問題にはSQLインジェクションが含まれ、ソリューションはパラメーター化されたクエリとバックアップです。パフォーマンスの最適化には、SQLステートメントの最適化とインデックスの使用が含まれます。ベストプラクティスは、コード仕様、セキュリティプラクティス、および定期的なバックアップを強調しています。
