我有一个网站,使用php - mysql。我想确定占用时间最多的数据库查询。除了使用分析器之外,我还可以使用哪些其他方法来定位查询瓶颈。
发布于 2011-08-14 23:09:49
您可以在MySql中启用慢查询日志记录:
慢查询日志由执行时间超过
long_query_time秒的所有SQL语句组成,并且(从MySQL 5.1.21开始)至少需要检查min_examined_row_limit行。获取初始表锁的时间不计入执行时间。mysqld在执行慢查询日志并释放所有锁之后,会向慢查询日志中写入一条语句,因此日志顺序可能与执行顺序不同。long_query_time的默认值为10。
发布于 2011-08-14 23:23:03
这是一个很大的主题,我只能建议几点-但我相信在其他地方也有很好的报道主题,所以
首先分析db查询。每个RDBMS都有一个长时间运行的查询列表,MySql是用一个配置标志打开的。这将捕获长时间运行的查询(这可能是秒级,这对于现代RDBMS来说是很长的时间)。
此外,每个RDBMS都会返回一个时间来执行它的记录集。我强烈建议您通过一个公共函数提取对DNase的所有调用,例如"executequery“,然后将SQL和执行时间提取到一个文件中,以便以后使用。
通常,慢查询来自于糟糕的表设计和缺乏良好的索引。对您担心的任何查询运行"explain“- dbae将告诉您它将如何运行该查询-任何”表扫描“都表明RDBMS无法在满足查询需求的表上找到索引
下一步分析是一个术语,最常用于查看执行程序的某些部分所花费的时间,即所有时间都在使用for循环,或者建立数据库连接所花费的时间。
您似乎想要的是性能测试
发布于 2011-08-14 23:40:43
只需在执行每个查询之前/之后读取时间。如果您使用任何数据库抽象类/函数,这很容易。
https://stackoverflow.com/questions/7057577
复制相似问题