本文介紹了 SQL 洞察頁面的基本信息,包括 SQL 統計信息、性能監控、租戶級請求分析、性能監控和 SQL 列表。
統計信息
在 統計信息 區域,您可以根據時間進行篩選,查看當前實例內可疑 SQL 和 SlowSQL 的數量,以及各租戶下的對應數量。單擊租戶名稱,系統會在下方的租戶診斷信息區域聯動展示該租戶在對應時間段內的診斷信息詳情。
性能監控
在 性能監控 區域,您可以根據時間進行篩選,查看集群 SQL 性能相關信息。
查看請求分析
單擊租戶行右側的 查看請求分析 按鈕,查看 SQL 的執行耗時分布和請求執行情況。
查看性能監控
單擊租戶行右側的 查看性能監控,查看租戶的性能監控數據。
租戶診斷信息
您可以通過租戶名后的下拉箭頭選擇租戶,查看該租戶的 TopSQL、SlowSQL、可疑 SQL、高危 SQL 和 新增 SQL 的診斷信息。
目前,系統對標準版(Key-Value)集群實例有如下限制:
對于版本號大于等于 4.2.4 但小于 4.3.0 的 KV 集群實例,支持顯示 TopSQL 和 SlowSQL 的診斷信息。
對于其他版本的 KV 集群實例,僅支持顯示 SlowSQL 的診斷信息。
支持通過 數據庫、節點、時間范圍、 SQL ID、SQL 文本、快速篩選 等對 SQL 列表進行篩選。
時間范圍:支持查看 近 5 分鐘、近 30 分鐘、近 1 小時、近 6 小時 的數據。您也可以自定義時間,但是需要注意以下限制:
最大范圍限定:選擇的時間范圍不得超過 24 小時。
最小范圍限定:
3天內:選擇的時間范圍不少于 1 分鐘。
3至7天內:選擇的時間范圍不少于 5 分鐘。
超過7天:選擇的時間范圍不少于 20 分鐘。
快速篩選:支持 全表掃描、多分區掃描、遠程執行多、硬解析、存在執行報錯 和 存在重試執行。
如果默認顯示的篩選條件無法滿足需求,您可以添加更多條件進行篩選。
單擊不同列表項中的 圖標,可以基于該列的排序整理列表。
列表中的展示列支持自定義,單擊 列管理 即可展示支持篩選的所有列。
可單擊右上方的 導出 ,下載對應 SQL 列表。
單擊 SQL 文本可以查看 SQL 診斷詳情,包括 SQL 文本、物理執行計劃、SQL 執行歷史、表信息 及 高級設置 等。
打開 聚合 in 查詢,將會聚合 in 查詢的結果,但不影響統計數據。在列表中可以看到 聚合 標識,將指針放在對應 SQL ID 可查看聚合的其他 SQL ID。
對于包含 IN 子句且內容由不同數量簡單常量組成的 SQL 語句,如果未啟用“聚合 in 查詢”,SQL 診斷功能會將它們視為不同類型的 SQL 語句;如果啟用了“聚合 in 查詢”,SQL 診斷功能會將它們視為相同類型的 SQL 語句,并將這些 SQL 語句的統計信息聚合到同一行中。
TopSQL
TopSQL 是指在指定時間范圍內整體響應時間最長的 SQL 語句。
單擊快捷篩選項,例如 全表掃描、多分區掃描 等,快速識別出需要優化的 SQL。
單擊 操作 列的 查看樣本,可以查看該 SQL 語句。
單擊 SQL 文本前的 +,查看 最后一次報錯 和 統計時段內報錯匯總。
單擊列表右上方的 查看優化建議,可跳轉至優化中心查看優化建議。
單擊列表右上方的 TopSQL 對比,可以對比相同 SQL 在同一個節點的不同時段或在不同節點上的運行情況。
不同時段對比:將同一節點上相同 SQL 在基準和對比時段的運行情況進行對比,然后查看 明細數據對比 和 性能趨勢對比 信息。
不同節點對比:將相同 SQL 在基準節點與其他節點的運行情況進行對比,然后查看 明細數據對比 和 響應時間趨勢對比 信息。
說明相同 SQL 是指相同的數據庫和 SQL ID。
當不同節點對比時,只有不同節點上執行相同 SQL 才會輸出結果。
除指定租戶外,您還可以對集群內所有租戶的 TopSQL 進行實時診斷。
當發現某個節點 CPU 負載過高時,可以先篩選 數據庫 和 節點,然后根據 CPU 時間 對 SQL 進行降序排序,從而識別出最需要優化的 SQL。
SlowSQL
SlowSQL 是指執行時間超過 500ms 的 SQL 語句。
單擊快捷篩選項,例如 全表掃描、多分區掃描 等,快速識別出需要優化的 SQL。
單擊 操作 列的 查看樣本,可以查看該 SQL 語句。
可疑 SQL
可疑 SQL 是指根據規則、算法篩選出的可能導致性能問題的 SQL 語句。以下是常見的診斷結果及處理建議:
診斷結果 | 處理建議 |
Hint 未生效 | 異常 SQL,需要 DBA 確認是否使用 OUTLINE 進行執行計劃固化。 |
全表掃描性能較差 | 請分析執行計劃和表結構,確認 SQL 有合適的索引可用。 |
走索引但性能比較低 | 請確認業務場景是否可以接受此性能,若不可接受請改進業務邏輯或優化索引。 |
性能比以前下降 | 請確認數據分布變化、請求量突漲、執行計劃變化等情況。 |
執行計劃變動且性能下降 | 需 DBA 確認,可使用 OUTLINE 進行執行計劃固化,以判斷是否為異常 SQL。 |
執行次數突刺 | 需確認業務量,可能導致整體性能下降。 |
CPU 負載過高 | 請確認業務場景、數據分布變化、請求量突漲、執行計劃變化等情況。 |
疑似鎖沖突 | SQL 存在重試,可能是鎖沖突導致,請排查業務邏輯,是否存在鎖沖突場景。 |
DML 訪問過多分區數 | 請改寫 SQL,保證 SQL 能進行分區裁剪。 |
疑似 Buffer 表 | 請確認相關表是否在頻繁更新。 |
疑似存在大小賬號 | 請排查是否存在數據傾斜問題。 |
執行計劃不穩定 | 請排查是否存在計劃惡化的問題。 |
計劃生成時間過長 | 請排查是否存在計劃命中率低等問題。 |
可疑 SQL 頁簽展示了 SQL 文本、SQL ID、數據庫、診斷結果 等信息。
高危 SQL
高危 SQL 是指可能對系統性能、安全及數據造成危害的 SQL 語句。以下是目前可識別的高危 SQL 類型:
操作描述 | 示例 | 高危類型 | 說明 |
新增或刪除列 |
| 表結構變更-新增/刪除列 | - |
刪除表或數據庫 |
| 刪除表/數據庫 | - |
清空表 |
| 清空數據表 | - |
更新不帶條件 |
| 更新不帶條件 | - |
更新條件恒為真 |
| 更新條件恒為真 | - |
刪除不帶條件 |
| 刪除不帶條件 | - |
刪除條件恒為真 |
| 刪除條件恒為真 | - |
返回行數過大 |
| 返回行數過大 |
|
影響行數過大 |
| 影響行數過大 |
|
參與分區數過多 |
| 參與分區數過大 |
|
in 條件過多 | where id in (1,2,3,4,5.....) | in 條件過多 | - |
索引變更 |
| 高危變更-索引變更 | - |
高危 SQL 頁簽展示了 SQL 文本、數據庫、危險原因 等信息。
新增 SQL
新增 SQL 是指在查詢區間往前一段時間(默認 7 天)沒有執行過,但是在查詢區間內有執行記錄的 SQL 語句。
新增 SQL 頁簽展示了 SQL 文本、SQL ID、數據庫、總執行次數 等信息。