質問

遅いクエリをログに記録せずに遅いクエリをチェックする他の方法があるのだろうかと思います。私は、メモリとI/Oを節約するために多くのログを記録する余裕がない、非常に忙しいサーバーを持っているとします。次に、遅いクエリがあるかどうかを確認するために利用できる他の方法はありますか?私は知っていますが、クエリのプロファイリングを行うことはできますが、どのクエリがほとんどの時間とメモリを消費しているかを特定するた

Mysql管理を開始したばかりで、これを処理する方法がわかりません。どの指導でも非常に認められます。

役に立ちましたか?

解決

遅いクエリログをまったく有効にしたくない場合は、提案があります

pt-query-digest < / a>時間の間隔で。

DBA Stackexchange

の数回提案しました

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)

同じクエリを何度も保存しないようにするには、クエリのハッシュを一意のキーとして使用します。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top