2011-01-25 28 views
3

我正在使用MySQL分析器來幫助診斷我正在研究的一些MySQL問題。但是,當我發出show profiles命令我沒有得到任何結果。MySQL分析器 - 顯示配置文件中沒有條目

這是我如何使用它:

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. 我運行MySQL 5.0.77
  3. select * from information_schema.profiling也不返回結果

回答

4

在回答我自己的問題...

看來,內置的MySQL剖析util上述描述在MySQL會話的基礎上運行。每次發佈命令時,phpMyAdmin似乎都會創建一個新連接。因此,打開性能分析然後選擇子頻繁選擇的命令彼此斷開連接。

這可以通過SSH連接到MySQL服務器並運行相同的命令來確認。在這個配置分析工作。

但是,它只能描述該會話中發出的命令。這意味着從配置文件結果中不包括其他任何針對來自其他來源(即Web應用程序)的數據庫的查詢。

我還沒有找到任何分析所有查詢到數據庫的方式,而不管源(即MSSQL分析器的工作方式)。因此,在現階段,我要依靠設置日誌配置值,在my.cnf中,然後在SSH會話手動執行記錄查詢:

log=/var/log/mysqldquery.log 

還不如說是有點吃力一個完美的解決方案,但有用。

5

經過測試,這個工程。 (?這取決於你的存儲引擎)

您可以從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 

請注意,我還添加了一個每個查詢後分號

0

儘管上述方法可行,但它仍然有點危險。你必須記住,如果你使用複製和/或這些查詢日誌中有更新,你將會改變你的數據集。謹慎使用。