MySQL Profiler - 显示配置文件中没有条目

时间:2011-01-25 14:39:13

标签: mysql profiling phpmyadmin profiler

我正在使用MySQL分析器来帮助诊断我正在研究的一些MySQL问题。但是,当我发出show profiles命令时,我没有得到任何结果。

这就是我使用它的方式:

set profiling=1 --Enable profiling

-- Run some selects / inserts etc
select count(*) from mytable
insert into mytable (mydata) values ('wibble')

show profiles

我期待show profiles命令为我提供我在启用分析后执行的选择等的配置文件数据(根据信息from this MySQL dev page),但是我得到的所有内容都是空的结果集。启用/禁用分析时我没有看到任何错误,在尝试查看配置文件时也没有看到任何错误。

以下可能相关或不相关:

  1. 这些命令是通过phpMyAdmin
  2. 发出的
  3. 我正在运行MySQL 5.0.77
  4. select * from information_schema.profiling不会返回任何结果

3 个答案:

答案 0 :(得分:7)

经过测试,此方法有效。

如果您可以使用 TRANSACTION (取决于您的存储引擎?),您可以从PhpMyAdmin执行此操作。

试试这个:

START TRANSACTION;

set profiling=1; --Enable profiling

-- Run some selects / inserts etc
select count(*) from mytable;
insert into mytable (mydata) values ('wibble');

show profiles;

COMMIT; --or rollback

请注意,我在每次查询后都添加了分号

答案 1 :(得分:4)

回答我自己的问题......

上面描述的内置MySQL分析实用程序似乎在MySQL会话的基础上运行。每次发出命令时,phpMyAdmin似乎都会创建一个新连接。因此,打开分析然后后续选择的命令彼此断开连接。

通过SSH连接到MySQL服务器并运行相同的命令可以确认这一点。在此配置中,分析工作正常。

但是,它仅配置在该会话中发出的命令。这意味着从其他来源(即Web应用程序)对DB执行的任何其他查询都不包含在配置文件结果中。

我没有找到任何方法来分析对数据库的所有查询,无论源是什么(即MSSQL分析器的工作方式)。所以目前我必须依赖在my.cnf中设置日志配置值,然后在SSH会话中手动执行记录的查询:

log=/var/log/mysqldquery.log

不是一个完美的解决方案,因为它有些费力,但它确实有效。

答案 2 :(得分:0)

虽然上述方法可行,但仍有些危险。您必须记住,如果您正在使用复制和/或这些查询日志中有更新,您将改变您的数据集。请谨慎使用。