Mysqlサーバーでスロークエリログなしでスロークエリを識別する
-
26-09-2020 - |
質問
遅いクエリをログに記録せずに遅いクエリをチェックする他の方法があるのだろうかと思います。私は、メモリとI/Oを節約するために多くのログを記録する余裕がない、非常に忙しいサーバーを持っているとします。次に、遅いクエリがあるかどうかを確認するために利用できる他の方法はありますか?私は知っていますが、クエリのプロファイリングを行うことはできますが、どのクエリがほとんどの時間とメモリを消費しているかを特定するた
Mysql管理を開始したばかりで、これを処理する方法がわかりません。どの指導でも非常に認められます。
解決
遅いクエリログをまったく有効にしたくない場合は、提案があります
の数回提案しました-
Nov 24, 2011
: MySQL一般クエリログのパフォーマンス効果 -
Apr 24, 2012
: MySQLのスループット -
Jul 26, 2012
:今走っているの? < / li>
Nov 24, 2011
リンク 、私はあなたがcrontabを起動することができるシェルスクリプトを提供しました pt - Query-Digest
試してみる!!!
他のヒント
たとえば、10秒ごとにステートメントをトリガーするスクリプトのループで次のステートメントを実行できます。
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
発行するクエリに応じて、多かれ少なかれ情報を提供するようにカスタマイズできます。
mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(64) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| TIME_MS | bigint(21) | NO | | 0 | |
| ROWS_SENT | bigint(21) unsigned | NO | | 0 | |
| ROWS_EXAMINED | bigint(21) unsigned | NO | | 0 | |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
同じクエリを何度も保存しないようにするには、クエリのハッシュを一意のキーとして使用します。
所属していません dba.stackexchange