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アプレットを使用して天井効果を実現する方法の例

推薦する

Vue3.0のさまざまなリスニング方法の包括的な概要

目次リスナー1.ウォッチエフェクト2.見る1.1 聴くための最初の方法1.2 聞く2つ目の方法1.3...

CSS3 の新しいレイアウト: flex の詳細な説明

Flexの基本概念フレックス レイアウト (フレックスはフレキシブル ボックスの略)、エラスティック...

ReactでCSSスタイルを動的に変更する2つの方法の詳細な説明

最初の方法: デモとしてボタンをクリックしてテキストを表示または非表示にするクラスを動的に追加します...

MySQLクエリツリー構造方式

目次MySQL クエリツリー構造1. ツリー構造について2. MySQLでカスタム関数を定義する方法...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

WeChatアプレットタブの左右スライドスイッチ機能実装コード

効果画像: 1. はじめに独自のアプレットでこのような機能を実装する必要がある1. 核となる考え方ス...

react setStateの詳細な説明

目次setState は同期ですか、それとも非同期ですか?カスタム合成イベントと React フック...

MySQLの詳細な説明Explain

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...

mini-vueレンダリングのシンプルな実装

目次序文ターゲット最初のステップ:ステップ2:ステップ3:ステップ4:要約する序文現在主流のフレーム...

Docker で MySQL データベースを使用して LAN アクセスを実現する

1. MySQLイメージを取得する docker pull mysql:5.6注: mysql5.7...

ネイティブ CSS で無限テキストカルーセルを実装する一般的な方法

テキストカルーセルは私たちの日常生活で非常に一般的です。スーパーマーケットや実店舗の入り口には、テキ...

Mysql5.7でのスケジュールバックアップの実装

1. MySQL インストール パス D:\xxx\MYSQL\MySQL Workbench CE...

Mysql マスタースレーブ同期 Last_IO_Errno:1236 エラー解決

Mysql マスタースレーブ同期の Last_IO_Errno:1236 エラーの原因は何ですか? ...

Mysql クラシック高レベル/コマンドライン操作 (クイック) (推奨)

サーバーとデータベースの構築方法を学ぶ必要があるため、最近は SQL 言語を独学で学び始めました。デ...

Docker で Kong API Gateway をインストールして使用する詳細なチュートリアル

1 はじめにKong は単純な製品ではありません。この記事で言及されている Kong は主に Kon...