全部產品
Search
文件中心

ApsaraDB for OceanBase:SQL 基本資料

更新時間:Aug 20, 2024

本文介紹了 SQL 洞察頁面的基本資料,包括 SQL 統計資訊、效能監控、租戶級請求分析、效能監控和 SQL 列表。

統計資訊

統計資訊 地區,您可以根據時間進行篩選,查看當前執行個體內可疑 SQL 和 SlowSQL 的數量,以及各租戶下的對應數量。單擊租戶名稱,系統會在下方的租戶診斷資訊地區聯動展示該租戶在對應時間段內的診斷資訊詳情。

image

效能監控

效能監控 地區,您可以根據時間進行篩選,查看叢集 SQL 效能相關資訊。

image

查看請求分析

單擊租戶行右側的 查看請求分析 按鈕,查看 SQL 的執行耗時分布和請求執行情況。image

查看效能監控

單擊租戶行右側的 查看效能監控,查看租戶的效能監控資料。image

租戶診斷資訊

您可以通過租戶名後的下拉式箭頭選擇租戶,查看該租戶的 TopSQLSlowSQL可疑 SQL高危 SQL新增 SQL 的診斷資訊。

  • 支援通過 資料庫節點時間範圍快速篩選 等對 SQL 列表進行篩選。

    • 時間範圍:支援查看 近 5 分鐘近 30 分鐘近 1 小時近 6 小時 的資料。您也可以自訂時間,但是需要注意以下限制:

      • 最大範圍限定:選擇的時間範圍不得超過 24 小時。

      • 最小範圍限定:

        • 3天內:選擇的時間範圍不少於 1 分鐘。

        • 3至7天內:選擇的時間範圍不少於 5 分鐘。

        • 超過7天:選擇的時間範圍不少於 20 分鐘。

    • 快速篩選:支援 全表掃描多分區掃描遠程執行多硬解析存在執行報錯存在重試執行

    • 如果預設顯示的篩選條件無法滿足您的需求,您可以單擊 展開,通過 SQL IDSQL 文本 或者 添加更多條件進行篩選。

  • 單擊不同清單項目中的 image.png 表徵圖,可以基於該列的排序整理列表。

  • 列表中的展示列支援自訂,單擊 列管理 即可展示支援篩選的所有列。

  • 可單擊右上方的 匯出 ,下載對應 SQL 列表。

  • 單擊 SQL 文本可以查看 SQL 診斷詳情,包括 SQL 文本物理執行計畫SQL 執行歷史表資訊進階設定 等。

  • 開啟 彙總 in 查詢,將會彙總 in 查詢的結果,但不影響統計資料。在列表中可以看到 彙總 標識,將指標放在對應 SQL ID 可查看彙總的其他 SQL ID。

    對於包含 IN 子句且內容由不同數量簡單常量組成的 SQL 陳述式,如果未啟用“彙總 in 查詢”,SQL 診斷功能會將它們視為不同類型的 SQL 陳述式;如果啟用了“彙總 in 查詢”,SQL 診斷功能會將它們視為相同類型的 SQL 陳述式,並將這些 SQL 陳述式的統計資訊彙總到同一行中。

    image

TopSQL

TopSQL 是指在指定時間範圍內整體回應時間最長的 SQL 陳述式。

image

  • 單擊快捷篩選項,例如 全表掃描多分區掃描 等,快速識別出需要最佳化的 SQL。

  • 單擊 SQL 文本前的 +,查看 最後一次報錯統計時段內報錯匯總image

  • 單擊列表右上方的 查看最佳化建議,可跳轉至最佳化中心查看最佳化建議。

  • 單擊列表右上方的 TopSQL 對比,可以對比相同 SQL 在同一個節點的不同時段或在不同節點上的運行情況。

    • 不同時段對比:將同一節點上相同 SQL 在基準和對比時段的運行情況進行對比,然後查看 詳細資料對比效能趨勢對比 資訊。image

    • 不同節點對比:將相同 SQL 在基準節點與其他節點的運行情況進行對比,然後查看 詳細資料對比回應時間趨勢對比 資訊。

      說明
      • 相同 SQL 是指相同的資料庫和 SQL ID。

      • 當不同節點對比時,只有不同節點上執行相同 SQL 才會輸出結果。

  • 除指定租戶外,您還可以對叢集內所有租戶的 TopSQL 進行即時診斷。image

  • 當發現某個節點 CPU 負載過高時,可以先篩選 資料庫節點,然後根據 CPU 時間 對 SQL 進行降序排序,從而識別出最需要最佳化的 SQL。

    image

SlowSQL

SlowSQL 是指執行時間超過 500ms 的 SQL 陳述式。

image

  • 單擊快捷篩選項,例如 全表掃描多分區掃描 等,快速識別出需要最佳化的 SQL。

  • 單擊 操作 列的 查看樣本,可以查看該 SQL 陳述式。

可疑 SQL

可疑 SQL 是指根據規則、演算法篩選出的可能導致效能問題的 SQL 陳述式。以下是常見的診斷結果及處理建議:

診斷結果

處理建議

Hint 未生效

異常 SQL,需要 DBA 確認是否使用 OUTLINE 進行執行計畫固化。

全表掃描效能較差

請分析執行計畫和表結構,確認 SQL 有合適的索引可用。

走索引但效能比較低

請確認業務情境是否可以接受此效能,若不可接受請改進商務邏輯或最佳化索引。

效能比以前下降

請確認資料分布變化、請求量突漲、執行計畫變化等情況。

執行計畫變動且效能下降

需 DBA 確認,可使用 OUTLINE 進行執行計畫固化,以判斷是否為異常 SQL。

執行次數突刺

需確認業務量,可能導致整體效能下降。

CPU 負載過高

請確認業務情境、資料分布變化、請求量突漲、執行計畫變化等情況。

疑似鎖衝突

SQL 存在重試,可能是鎖衝突導致,請排查商務邏輯,是否存在鎖衝突情境。

DML 訪問過多分區數

請改寫 SQL,保證 SQL 能進行分區裁剪。

疑似 Buffer 表

請確認相關表是否在頻繁更新。

疑似存在大小帳號

請排查是否存在資料扭曲問題。

執行計畫不穩定

請排查是否存在計劃惡化的問題。

計劃產生時間過長

請排查是否存在計劃命中率低等問題。

可疑 SQL 頁簽展示了 SQL 文本SQL ID資料庫診斷結果 等資訊。

image

高危 SQL

高危 SQL 是指可能對系統效能、安全及資料造成危害的 SQL 陳述式。以下是目前可識別的高危 SQL 類型:

操作描述

樣本

高危類型

說明

新增或刪除列

  • alter table test drop column id

  • alter table test add new_id int not null comment '新id'

表結構變更-新增/刪除列

-

刪除表或資料庫

  • drop table test

  • drop database test

刪除表/資料庫

-

清空表

truncate table test

清空資料表

-

更新不帶條件

update test set new_id =1

更新不帶條件

-

更新條件恒為真

update test set new_id =1 where 1 = 1

更新條件恒為真

-

刪除不帶條件

delete from test

刪除不帶條件

-

刪除條件恒為真

delete from test where 1=1

刪除條件恒為真

-

返回行數過大

max_return_rows >= 50000

返回行數過大

max_return_rows用於設定最大返回行數,若超過設定的值則會被認定為高危 SQL。

影響行數過大

max_affected_rows >= 50000

影響行數過大

max_affected_rows用於設定最大影響行數,若超過設定的值則會被認定為高危 SQL。

參與分區數過多

max_partition_cnt >2000

參與分區數過大

max_partition_cnt用於設定最大參與分區數,若超個設定的值則會被認定為高危 SQL。

in 條件過多

where id in (1,2,3,4,5.....)

in 條件過多

-

索引變更

drop index idx2 on test_high_risk2

高危變更-索引變更

-

高危 SQL 頁簽展示了 SQL 文本資料庫危險原因 等資訊。

image

新增 SQL

新增 SQL 是指在查詢區間往前一段時間(預設 7 天)沒有執行過,但是在查詢區間內有執行記錄的 SQL 陳述式。

image

新增 SQL 頁簽展示了 SQL 文本SQL ID資料庫總執行次數 等資訊。