2014-01-20 96 views
11

在MySQL如何清除MySQL查詢型材

打開分析
SET profiling=1; 

後,我可以運行像像SELECT NOW();查詢,看輪廓結果與它使用的執行時間:

SHOW PROFILES; 

然而,我無法確定如何清除配置文件列表。任何人都知道刪除舊配置文件數據的聲明? SET profiling=0;只是禁用新數據的記錄,不會刪除舊的統計信息。

回答

10

刪除以前的查詢配置集@@profiling_history_size=0。下面的代碼段清除配置文件,將歷史上最大規模和啓用配置

SET @@profiling = 0; 
SET @@profiling_history_size = 0; 
SET @@profiling_history_size = 100; 
SET @@profiling = 1; 

測試在5.6.17

+1

這會刪除以前的查詢,但不會重置自動遞增ID。我不想在我的調試中不斷更新查詢ID,但我沒有(或不想)發出'ALTER TABLE PROFILING AUTO_INCREMENT = 1;'的權限 - 是否有另一種重置方法?謝謝(我嘗試設置profiling_history_size = 1) – scipilot

+0

在MySQL編輯器中,您可以停止正在執行的查詢。這似乎重置了分析和auto_increment! – Bee157

2

分析信息下information_schema.profiling臨時表存儲在http://dev.mysql.com/doc/refman/5.0/en/profiling-table.html

參考下有可以截斷存儲在那裏,如果發動機允許它的信息所需的訪問級別的數據庫用戶;

TRUNCATE TABLE information_schema.PROFILING;

如果沒有,你可以重新啓動MySQL服務器,爲information_schema被單獨存儲在內存中,分析信息服務重新啓動後不保留。

+0

這是有道理的。但是,使用root帳戶並設置爲我認爲對所有內容100%的權限,我會得到以下內容:'拒絕用戶'root'@'localhost'訪問數據庫'information_schema''。你知道什麼可以控制這種權限嗎? – Ray

+0

您可以重新啓動mysqld並重新創建表。 'information_schema'僅存儲在內存中,由視圖組成,在服務重新啓動後,分析信息不會被保留。 –

+2

是的,重新啓動工作,但不是首選方法 - 尤其是在現場機器或其他開發人員正在使用的方法。信息架構中的表是隻讀表嗎? – Ray