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开发页面中的信息),但是我得到的所有内容都是空的结果集.启用/禁用分析时我没有看到任何错误,在尝试查看配置文件时也没有看到任何错误.
以下可能相关或不相关:
select * from information_schema.profiling 没有结果经测试,这是有效的.
如果您可以使用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)
请注意,我在每次查询后都添加了分号!
在回答我自己的问题时......
上面描述的内置 MySQL 分析实用程序似乎是在 MySQL 会话的基础上运行的。phpMyAdmin 似乎每次发出命令时都会创建一个新连接。因此,打开分析的命令和随后的选择将彼此断开连接。
通过 SSH 连接到 MySQL 服务器并运行相同的命令可以确认这一点。在此配置中,分析工作正常。
但是,它仅分析该会话中发出的命令。这意味着从其他源(即 Web 应用程序)对数据库执行的任何其他查询都不会包含在配置文件结果中。
我还没有找到任何方法来分析对数据库的所有查询,无论来源如何(即 MSSQL 分析器的工作方式)。因此,目前我必须依靠在 my.cnf 中设置日志配置值,然后在 SSH 会话中手动执行记录的查询:
log=/var/log/mysqldquery.log
Run Code Online (Sandbox Code Playgroud)
这不是一个完美的解决方案,因为它有点费力,但它确实有效。