在查看 SQL 的基本信息后,您可以通過單擊 SQL 文本跳轉到 SQL 詳情頁。根據不同的 SQL 診斷情況,SQL 詳情頁選擇性地展示對應的 SQL 文本、優化建議、采樣明細、診斷詳情、采樣歷史、執行歷史和執行計劃等信息。
SQL 文本
在 SQL 文本 區域,可以查看完整的 SQL 文本。通過勾選 表結構,您可以查看對應表的結構信息。
優化建議
沒有優化建議時,該卡片不顯示。
在 優化建議 區域,可以查看診斷時間范圍內該 SQL 的所有問題及對應的優化建議。目前,系統提供兩種優化建議:
計劃推薦
分析最近 1 周內的 SQL 執行計劃,如果發現某個計劃在 CPU 時間上明顯優于其他同類型的執行計劃(無論是本地計劃還是分布式計劃),系統將推薦您關注此計劃。當有計劃推薦時,建議您詳細分析該計劃與現有執行計劃的差異,并確認不涉及 DDL 變更,再考慮進行綁定。綁定后,請密切觀測優化效果。如果沒有優化效果,請及時回滾操作。
計劃推薦的具體規則如下:
計劃推薦根據最新執行計劃的 CPU 時間進行分檔評估。當最新執行計劃 CPU 時間較小時,只有那些性能明顯優于最新計劃的候選計劃才會被推薦。而當最新執行計劃的 CPU 時間較大時,候選計劃只需稍微優于最新計劃即可被推薦。
最新計劃 CPU 時間
候選計劃 CPU 時間
[0-1) ms
候選計劃為最新計劃 CPU 時間的 1/10
[1-10) ms
候選計劃為最新計劃 CPU 時間的 1/5
[10-100) ms
候選計劃為最新計劃 CPU 時間的 1/2
[100-1000) ms
候選計劃為最新計劃 CPU 時間的 2/3
[1000- 無窮大) ms
候選計劃為最新計劃 CPU 時間的 5/6
索引推薦
索引推薦的具體規則如下:
等值查詢列在前,以任意順序組合。
如果有范圍查詢,將選擇性最好的范圍查詢列置于等值查詢列之后。
如果沒有范圍查詢,當滿足消除排序條件時,將排序列置于等值查詢列之后。
將謂詞中其他列置于索引之后,形成半寬索引。
將 Select 中其他列置于索引之后,構造覆蓋索引。
當覆蓋索引不超過 8 列時,推薦使用覆蓋索引,否則推薦半寬索引。
只有當 CPU 時間超過 10ms 或響應時間超過 20ms 時才會進行索引推薦。
SQL 診斷詳情
沒有診斷詳情時,該卡片不顯示。
在 SQL 診斷詳情 區域,您可以查看診斷時間范圍內出現同類型問題的次數以及最近一次診斷詳情,包括時間范圍、執行次數、CPU 時間和最后執行時間。單擊三角箭頭,可以進一步查看診斷依據和問題排查建議等。
SQL 采樣明細
僅 SlowSQL 詳情頁顯示 SQL 采樣明細信息,其他類型的 SQL 詳情頁不顯示。
在 SQL 采樣明細 區域,您可以查看當前 SQL 的具體采樣信息。單擊 列管理,可以設置需要展示的列并調整列的先后順序。單擊 導出,可以下載 SQL 采樣明細列表。
聚合 SQL 明細
僅查看聚合 SQL 詳情頁時,會顯示聚合 SQL 明細。
在 聚合 SQL 明細 區域,您可以查看所有相關的 SQL 信息。單擊 列管理,可以設置需要展示的列并調整列的先后順序。單擊 +,可以查看最后一次報錯和統計時段內報錯匯總信息。
物理執行計劃
在 物理執行計劃 頁簽,非聚合 SQL 和聚合 SQL 的展示會有所區別。
非聚合 SQL 物理執行計劃
展開 Plan Hash,查看對應的物理執行計劃詳情。
在執行計劃詳情頁面中:
查看執行步驟中算子的具體應用過程和 Server 執行計劃。算子的基礎介紹,請參見 SQL 執行計劃簡介。
將光標懸停在執行計劃的對象名稱上,可以查看表結構或 DDL 索引信息等。
如果對象名稱是表,可以查看表結構。
如果對象名稱是索引,可以查看 DDL 索引信息等。
單擊右上角 自定義,從下拉列表中選擇 近 1 小時 或 近 12 小時 快速篩選查詢時間段。您也可以自定義查詢時間段,當前僅支持查詢最近 15 天的物理執行計劃。
單擊 近 30 天綁定歷史記錄,查看最近 30 天物理執行計劃的綁定記錄。
單擊 刷新 plan cache,確認后會清除租戶下該 SQL 的執行計劃緩存。下次執行該 SQL 時,系統將會重新生成執行計劃。
單擊 綁定,確認后會強制 SQL 按該執行計劃執行。如果執行計劃處于綁定狀態,則會顯示 已綁定。
聚合 SQL 物理執行計劃
SQL 聚合用于將指定范圍內的相似 SQL 語句進行匯總。不同時間范圍內包含的 SQL 列表可能會有所不同。因此,當前無法顯示執行計劃的綁定信息。請訪問優化中心以查看具體的 Outline 生效情況及操作歷史。
展開 Plan Hash,查看對應的物理執行計劃詳情和聚合 SQL 明細。
在 執行計劃詳情 頁簽:
查看執行步驟中算子的具體應用過程和 Server 執行計劃。算子的基礎介紹,請參見 SQL 執行計劃簡介。
將光標懸停在執行計劃的對象名稱上,可以查看表結構或 DDL 索引信息等。
如果對象名稱是表,可以查看表結構。
如果對象名稱是索引,可以查看 DDL 索引信息等。
在 聚合 SQL 明細 頁簽,查看聚合 SQL 列表,包含 SQL 文本 和 SQL ID。
單擊右上角 自定義,從下拉列表中選擇 近 1 小時 或 近 12 小時 快速篩選查詢時間段。您也可以自定義查詢時間段,當前僅支持查詢最近 15 天的物理執行計劃。
單擊 綁定,確認后會強制 SQL 按該執行計劃執行。如果執行計劃處于綁定狀態,則會顯示 已綁定。
SQL 執行歷史
在 SQL 執行歷史 頁簽,非聚合 SQL 和聚合 SQL 的展示會有所區別。
非聚合 SQL 執行歷史
您可以查看近 1 小時、近 12 小時或自定義時間范圍內的 SQL 執行歷史以及 SQL 相關的圖表。
SQL 執行歷史:可以查看當前 SQL 語句的執行歷史記錄。
單擊 全部節點,從下拉列表中選擇您想要查看的節點。
單擊 自定義時間,從下拉列表中選擇 近 1 小時 或 近 12 小時。您也可以自定義時間,但是需要注意以下限制:
僅支持查看最近 15 天的 SQL 執行歷史。
最小范圍限定:
3 天內:選擇的時間范圍不少于 1 分鐘。
3 至 7 天內:選擇的時間范圍不少于 5 分鐘。
超過 7 天:選擇的時間范圍不少于 20 分鐘。
單擊右上方的 列管理,可以勾選需要高頻查看的信息。
單擊 導出,可以下載 SQL 執行歷史列表。
SQL 執行耗時:您可通過單擊右側的類別,選擇查看對應的執行耗時情況。
總執行次數:單擊 總執行次數,從下拉列表中選擇您想要查看的數據。
聚合 SQL 執行歷史
您可以查看近 1 小時、近 12 小時或自定義時間范圍內的 SQL 執行歷史以及 SQL 相關的圖表。
SQL 執行歷史:可以查看當前 SQL 語句的執行歷史記錄。單擊右上方的 列管理,可以勾選需要高頻查看的信息。單擊 導出,可以下載 SQL 執行歷史列表。
聚合 SQL 的圖表數據,可以通過聚合 SQL 維度或者單一 SQL 維度分別查看。
聚合 SQL 維度統計了關聯 SQL 的整體數據。
SQL 執行耗時:您可以從下拉列表中選擇 總數據庫耗時、平均耗時、響應時間 等選項進行查看。
總執行次數:單擊 總執行次數,從下拉列表中選擇您想要查看的數據。
單一 SQL 維度默認展示 CPU 占比前 10 的 SQL 數據,可以通過提示篩選更多 SQL。
SQL 執行耗時:您可以從下拉列表中選擇 總數據庫耗時、平均耗時、響應時間 等選項進行查看。此外,可以通過單擊 SQL ID 查看指定 SQL 的信息。
總執行次數:單擊 總執行次數,從下拉列表中選擇您想要查看的數據。此外,可以通過單擊 SQL ID 查看指定 SQL 的信息。
表信息
在 表信息 頁簽,您可以查看索引的相關信息并進行索引綁定等操作。如果索引處于已綁定狀態,則會顯示 已綁定。此外,您還可以查看表統計信息。
高級設置
限流設置
在 限流設置 區域,單擊 設置限流。
輸入 最大并發數,并單擊 確定。
在彈出的對話框中,單擊 確定。
Outline 設置
在 Outline 設置 區域,單擊 設置 Outline。
輸入 Outline,并單擊 確定。
在彈出的對話框中,單擊 確定。