Mysql

在 MySQL 中記錄慢查詢的 EXPLAIN 輸出

  • April 22, 2022

我試圖了解 PostgreSQL for MySQL 中是否有類似 auto_explain 的功能。具體來說,我對記錄 MySQL 中所有慢查詢的查詢計劃(不僅僅是查詢)感興趣。

是否有任何文件說明這是否可行?

MySQL 有log_slow_extra ,其中包括本手冊頁中的一些會話狀態變數,但它不等同於說明

如果您使用 MariaDB,則可以在慢查詢日誌中使用log-slow-verbosity=query_plan,explain

據我所知,MySQL 沒有解釋慢查詢日誌中所有查詢的功能。在記錄期間這樣做是有風險的,因為即使您只執行 EXPLAIN 報告,某些查詢對伺服器來說也可能代價高昂(例如,如果查詢具有派生表子查詢,則在 EXPLAIN 期間執行子查詢)。

我通常使用免費的pt-query-digest工具來匯總我的慢查詢日誌。

該工具有一個選項–explain,它可以為報告中的每種查詢類型執行一次 EXPLAIN,您可以指示它在您選擇的任何 MySQL 實例上生成 EXPLAIN 報告,因此它不一定是您的生產伺服器。

引用自:https://dba.stackexchange.com/questions/311181