MySQL の遅いクエリ操作の例の分析 [有効化、テスト、確認など]

MySQL の遅いクエリ操作の例の分析 [有効化、テスト、確認など]

この記事では、MySQL のスロー クエリ操作について例を挙げて説明します。ご参考までに、詳細は以下の通りです。

一部の MySQL SQL ステートメントは非常に遅く実行される可能性があり、サーバーの負荷が急増する可能性があります。

まず、top コマンドや ps コマンドなどを使用して、負荷に影響を与えているのが MySQL であることを確認します。

次に、MySQL に入り、 show full processlistコマンドを使用して実行中の SQL ステートメントを照会し、問題を確認します。explainコマンドを使用してステータスを表示します。

最後に、削除または最適化するSQL文を見つけます

Centos7にmariadbサービスをインストールする

yum -y mariadb-server mariadb-devel をインストールします

低速クエリを有効にする

/etc/my.cnf.d/server.cnf の詳細
[マリアdb]
slow_query_log=オン
slow_query_log_file=/usr/local/mysql/data/slow.log
長いクエリ時間=1

mariadbサービスを開始する

systemctl で mariadb を起動します。

MySQLのスロークエリが有効になっているかどうか、また上記がスロークエリである期間がどのくらいかを確認します。

MariaDB [(なし)]> '%slow_query%' のような変数を表示します。
+---------------------+--------------------------------+
| 変数名 | 値 |
+---------------------+--------------------------------+
| slow_query_log | オン |
| slow_query_log_file | /usr/local/mysql/data/slow.log |
+---------------------+--------------------------------+
セット内の 2 行 (0.00 秒)

MariaDB [(なし)]> 'long_query_time' のような変数を表示します。
+-----------------+----------+
| 変数名 | 値 |
+-----------------+----------+
| 長いクエリ時間 | 1.000000 |
+-----------------+----------+
セット内の 1 行 (0.00 秒)

#スロークエリが有効になっていない場合は、コマンドラインで有効にすることができます。mysql> set global slow_query_log=1;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

遅いクエリをテストし、ログを表示する

MariaDB [(なし)]> sleep(2) を選択します。
+----------+
| 睡眠(2) |
+----------+
| 0 |
+----------+
セット1列(2.00秒)

[root@localhost ~]# /usr/local/mysql/data/slow.log の詳細
/usr/libexec/mysqld、バージョン: 5.5.60-MariaDB (MariaDB サーバー)。次で開始:
TCP ポート: 0 Unix ソケット: /var/lib/mysql/mysql.sock
時間IDコマンド引数
# 時刻: 180930 23:51:07
# ユーザー@ホスト: root[root] @ localhost []
# Thread_id: 2 スキーマ: QC_hit: いいえ
# クエリ時間: 2.001017 ロック時間: 0.000000 送信行数: 1 検査行数: 0
タイムスタンプを1538322667に設定します。
スリープ(2)を選択します。

遅いクエリの確認

MariaDB [(なし)]> show full processlist; #進行中のスロークエリの状態を表示します +----+------+-----------+---------+----------+-----------+-----------+------------------------+----------+
| ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | 進行状況 |
+----+------+-----------+---------+----------+-----------+-----------+--------------------------+----------+
| 3 | root | localhost | NULL | クエリ | 9 | ユーザースリープ | select sleep(10) | 0.000 |
| 4 | root | localhost | NULL | クエリ | 0 | NULL | 完全なプロセスリストを表示 | 0.000 |
+----+------+-----------+---------+----------+-----------+-----------+--------------------------+----------+
セット内の 2 行 (0.00 秒)

MariaDB [(なし)]> show full processlist; #状態を確認します スロークエリは終了しましたが、ユーザーはログインしています +----+-------+-----------+---------+--------+-------+-------+------------------------+---------+
| ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 | 進行状況 |
+----+------+-----------+---------+--------+--------+--------+-------------------------+----------+
| 3 | ルート | ローカルホスト | NULL | スリープ | 1 | | NULL | 0.000 |
| 4 | root | localhost | NULL | クエリ | 0 | NULL | 完全なプロセスリストを表示 | 0.000 |
+----+------+-----------+---------+--------+--------+--------+-------------------------+----------+
セット内の 2 行 (0.00 秒)

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL ストレステストツールの使い方
  • PHP+MySQL でオンラインテストの回答例を実装する
  • MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明
  • MySQLで数千万のテストデータを素早く作成する方法
  • MySQL のメモリ使用量と CPU 使用率が高い場合のテストと解決策
  • sysbench を使用して MySQL のパフォーマンスをテストする詳細なチュートリアル
  • MySQL ループ文 while ループ テスト
  • MySQLデータベースはsysbenchに基づくOLTPベンチマークテストを実装します

<<:  Win10でIIS10を構成し、ASPプログラムのデバッグをサポートする手順

>>:  WeChatアプレットを使用して天井効果を実現する方法の例

推薦する

Xtrabackup を使用した MySQL バックアップ プロセスの詳細な説明

目次01 背景02 はじめに03 ワークフロー04 いくつかの質問05 ファイルをバックアップする0...

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...

VMware WorkStation を Docker for Windows で使用するための詳細なチュートリアル

目次1. はじめに2. Windows用Dockerをインストールする1. Windows用Dock...

デプロイから基本操作までDocker Swarm

Docker SwarmについてDocker Swarm は次の 2 つの部分で構成されます。 D...

MySQL ストアド プロシージャにおけるループ ステートメント (WHILE、REPEAT、LOOP) の使用法の分析

この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHIL...

MysqlチューニングExplainツールの詳細な説明と実践的な演習(推奨)

MySQL チューニング ツールの詳細な説明と実践的な演習の説明 ツールの紹介の説明 分析例の説明...

ウェブサイトメンテナンスページのリスト構築のヒント

また、多くの場合、メンテナンスのために Web サイトを少なくとも数分間オフラインにする必要がありま...

Linux ダイナミックライブラリの生成と使用ガイドの詳細な説明

Linux での動的ライブラリ ファイルのファイル名は libxxx.so のようになります。ここで...

Ubuntu インストール cuda10.1 ドライバ実装手順

1. cuda10.1をダウンロードします。 NVIDIA 公式ウェブサイト リンク: https:...

MySQLの遅いクエリ問題の詳細な分析データ送信

例を通して、MySQL のデータ テーブル送信のクエリが遅い問題の解決策を共有しました。最近、コード...

1つの記事でNavicat for MySQLの基本を理解する

目次1. データベース操作2. データ型3. バックアップとリカバリ3. 操作4. 上級5. 知識補...

自動開始および停止コマンドを適用するには、Docker サービスを再起動します (推奨)

Docker サービス アプリケーションを再起動するコマンドを見てみましょう。具体的な内容は次のと...

Windows 10 での MySQL 8.0 のダウンロードとインストール構成のグラフィック チュートリアル

この記事では、MySQL 8.0のダウンロードとインストールについてご紹介します。具体的な内容は以下...