我有一个在典型的共享主机上运行的PHP + MySQL Web应用程序,我想知道最常调用哪些查询以及消耗的资源数量。这样,我将专注于最昂贵的查询来优化资源或检测严重优化的查询。
例如:
query1 - 500 times - 50% (or 44seconds or any measuring criteria)
query2 - 4000 times - 20%
query3 - 300 times - 1%
...
我该怎么做?
答案 0 :(得分:1)
您可以测量查询的执行时间,并将该信息与调试信息一起保存到数据库中的表中,例如查询字符串本身,执行查询的文件和行以及结果数。可以使用此数据计算统计数据。
答案 1 :(得分:1)
例如,对于PDO,您可以创建具有简单结构的类,如下所示:
class DatabaseConnection extends PDO
{
private $queries = array();
public function query($stmt)
{
$start_time = microtime(true);
$result = parent::query($stmt);
$end_time = microtime(true) - $start_time;
$this->queries[] = array(
'query' => $stmt,
'time' => $end_time
);
return $result;
}
}
答案 2 :(得分:0)
根据您的主机,您可以启用Slow query log,其中列出的查询时间超过x秒。