katsumiさんがNucleusのSQLクエリ実行回数とメモリ消費量を測っていたので、うちでもまねしてみました。
ここでは同時に、メモリの消費量を見るためにmemory_get_usage()関数の戻り値も表示している(PHPのコンパイル方法によっては、この関数は使えないので注意)。
memory_get_usage()、こんな関数あったんですね。うちではメモリ使用量はキャッシュヒット時で800k弱、キャッシュミスヒット時で1.1Mくらいでした。
実はクエリの実行回が多いことについてはずいぶん前からわかっていて、僕のところでは最悪で500程度の数値が出ていました。これらについては後述の方法で実行したクエリの内容を保存しておいてそのクエリの内容を分析してチューニングしたりしていました。
† 実は画面の左下に
これらの値については画面のNP_Benchmarkを改造して画面の左下に表示しています。
左から、メモリ使用量(B), クエリ実行数(回), 処理時間(秒)という感じです。
[625712, (20/20)q., 0.05sec.]
† 参考)Nucleusの実行クエリをトラッキングする
globalfunctions.php
この状態でindex.phpの一番最後に下記を追加すると実行したクエリが表示されるようになります。
この処理はクエリが多いとその分メモリを消費するので必要時以外はコメントアウトしておいたほうがいいです。
クエリーの回数も気になりますが,それよりも「遅い」クエリーがどれくらいあるのかとか,同じものを繰り返し取っていないかなどが気になります。そういうのも簡単に調べられるといいんですけどねえ。
MySQL5.1系であれば実行したクエリのコストがわかるんですが、みんなで使うのはちょっと難しいですよね。
show session status like 'Last_query_cost';
実行時間をとってみて長いものだけ保存しておくというのがいいのかなぁ。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。