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

MrE*_*yes 3 mysql profiler profiling phpmyadmin

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我希望show profiles命令能够为我提供在启用分析后执行的选择等的配置文件数据(根据此MySQL开发页面中的信息),但是我得到的所有内容都是空的结果集.启用/禁用分析时我没有看到任何错误,在尝试查看配置文件时也没有看到任何错误.

以下可能相关或不相关:

  1. 这些命令是通过phpMyAdmin发布的
  2. 我正在运行MySQL 5.0.77
  3. select * from information_schema.profiling 没有结果

zup*_*upa 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
Run Code Online (Sandbox Code Playgroud)

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


MrE*_*yes 5

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

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

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

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

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

log=/var/log/mysqldquery.log
Run Code Online (Sandbox Code Playgroud)

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