
RAMを消費しているプロセスの詳細を取得する方法。上コマンドを実行すると、Mysql が大量の RAM を消費していることがわかりました。Mysql が通常の動作とはかけ離れた大量の RAM を消費している理由をどうすれば知ることができますか?
「」以外にプロセスの詳細を取得するためのコマンドはありますか?追伸「
答え1
SHOW PROCESSLIST
現在実行中のクエリに関する情報を取得するには、MySQL 内で実行する必要があります。
答え2
mytop - MySQL Server のパフォーマンスをリアルタイムで監視するためのコマンド ライン ユーティリティ。mytop が適切に機能するには、次のものが必要です。
- Perl 5.005以降
- Getopt::Long
- DBI と DBD::mysql
- CPAN の Term::ReadKey
上記は Linux ディストリビューション向けに指定したものです。
答え3
MySQL は、最適化されていないクエリを処理しているときに、大きなメモリ内一時テーブルを作成する必要があるようです。
有効になっていない場合は、my.cnf ファイルに次のコードを追加して、スロー クエリ ログを有効にします。
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
次に、/var/log/mysql/mysql-slow.log ファイルを確認します。ファイルにリストされている各クエリに対して EXPLAIN を実行し、そのクエリの実行時に何が起きているかを把握する必要があります。その情報を基に、クエリを最適化してパフォーマンスを向上させることができます。