by shigemk2

当面は技術的なことしか書かない

クエリのデバッグ情報について

第11回 CakePHPの「DEBUG値」を極める!:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社

core.phpで、DEBUG値を2に設定すると、
DBへのクエリーのデバッグ情報が以下のように出力される。

3 queries took 1 ms

Nr Query Error Affected Num. rows Took (ms)
1 DESCRIBE `tasks` 5 5 1
2 SELECT `Task`.`id`, `Task`.`content`, `Task`.`status`, `Task`.`created`, `Task`.`modified` FROM `tasks` AS `Task` WHERE `Task`.`status` = 'yet' ORDER BY `Task`.`created` ASC 3 3 0
3 SELECT `Task`.`id`, `Task`.`content`, `Task`.`status`, `Task`.`created`, `Task`.`modified` FROM `tasks` AS `Task` WHERE `Task`.`status` = 'done' ORDER BY `Task`.`modified` DESC 1 1 0
  • * queries took * ms 実行したクエリの数と,合計時間
  • Nr 実行したクエリーの連番
  • Query 実行したSQL
  • Error クエリがエラーだった場合,エラー情報
  • Affected UPDATEやDELETEの際は,影響した行数が入る。 SELECTの場合は結果の行数
  • Nom. rows結果の行数
  • Took (ms) DB上でのクエリの実行時間と考えて差し支えないが、CakePHPコア内の処理時間の一部も含まれるため,DB上での実行時間だけとは限らない。APCなどのPHPアクセラレータを導入した際にこの値が短縮されることがある。

クエリの合計時間とクエリ1つ1つについての情報が列挙されるので,
だいぶ充実した内容になっている。

どんなクエリを発行していて、
どのくらい実行に時間がかかっているかが分かるため,
ボトルネック調査のときなどにかなり重宝するはず。