我正在使用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),但是我得到的所有内容都是空的结果集。启用/禁用分析时我没有看到任何错误,在尝试查看配置文件时也没有看到任何错误。
以下可能相关或不相关:
select * from information_schema.profiling
不会返回任何结果答案 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)
虽然上述方法可行,但仍有些危险。您必须记住,如果您正在使用复制和/或这些查询日志中有更新,您将改变您的数据集。请谨慎使用。