全部產品
Search
文件中心

ApsaraDB for OceanBase:執行分析

更新時間:Dec 07, 2024

背景資訊

ODC SQL 視窗提供了用於處理資料的使用者介面。在 SQL 視窗中,您可以對 SQL 陳述式進行系統評估、執行詳情和執行的全鏈路耗時資訊。

本文檔以表 employee 為例,介紹如何對查詢 SQL 陳述式進行系統評估。

執行計畫

  1. 在 SQL 視窗中,編輯 SQL 陳述式以查詢插入表employee的資料。

    image.png

    SELECT `emp_no`, `birthday`, `name`, `time`, `test_col`, `status`, `age`, `state` FROM `employee`;
  2. 如上圖所示,選中 SQL 陳述式並單擊執行計畫表徵圖,可以在執行 SQL 陳述式前系統預估執行資料(EXPLAINPLAN 操作的結果),展示的執行資料可能與實際執行語句後的資料略有不同。

    image

  3. 計劃詳情 頁面中,單擊 文本視圖 切換至格式化展示頁面。

執行詳情

說明
  • 對於 OceanBase V4.2.4 之前的版本,執行 SQL 陳述式時,您可以通過結果集頁簽中 執行詳情 查看 SQL 執行的基本資料、耗時統計、I/O 統計、執行的 SQL 陳述式、計劃統計和大綱。

    image

  • 對於 OceanBase V4.2.4 及之後 OceanBase V4.3.0 之前的版本或者 OceanBase V4.3.3.1 及之後的版本,您在執行查詢/插入/更新/刪除/檢索資料庫中的資料時,您可以通過 執行畫像 即時查詢 SQL 執行的執行剖析,通過執行剖析可以快速查詢 SQL 執行詳情和識別效能瓶頸。

執行畫像入口

  • 入口一:在 SQL 視窗執行 SQL 陳述式時,執行過程中可以在 日誌 頁簽單擊 查看執行畫像

    重要

    如果 SQL 陳述式的執行耗時低於 1 秒,日誌頁簽中可能不會展示執行畫像入口。

    image

  • 入口二:SQL 陳述式執行完成後,可以在執行結果中單擊執行畫像表徵圖。

    image

  • 入口三:SQL 陳述式執行完成後,單擊 執行記錄 頁簽中的 TRACE ID 可進入執行畫像介面。

    image

執行剖析

執行詳情 即執行畫像是對 SQL 執行計畫的可視化和資料擷取,支援即時查看運算元執行狀態、耗時詳情、I/O 和運行時資料,並對全域執行耗時進行匯總和排序。

image

通過執行畫像,您可以:

  • 以圖格式查看 OceanBase 的實際執行計畫,更方便理解運算元執行順序和串連關係。

  • 通過執行概覽、即時 I/O 統計和耗時 Top5 快速進行執行瓶頸識別,ODC 根據 CPU time 進行耗時排序。

  • 即時查詢運算元的執行狀態、時間和吐行行數,通過單擊運算元節點,您可以在右側擷取到運算元屬性、耗時詳情,以及 I/O 及其它運行時資料。

    image

  • 支援分析單機執行計畫和分析分布式執行計畫,並存執行運算元支援按照 DB 耗時、IO 記憶體和吐行行數排序,快速定位元據傾斜。

SQL 執行概覽

類型

參數說明

SQL 執行概覽

image

  • CPU time:所有運算元的 CPU 耗時之和。

  • I/O wait time:所有運算元的 IO 等待時間之和。

  • DB time:計劃執行消耗時間。

  • Queue time:請求在隊列的等待時間。

  • Plan type:表示執行計畫類型為本地(LOCAL)、遠程(REMOTE)或分布式(DISTRIBUTED)。

  • Is hit plan cache:是否命中計畫快取。

運算元執行概覽

image

  • CPU time:當前運算元 CPU 限定總時間,並行運算元的該項為所有子線程的耗時匯總。

  • I/O wait time:當前運算元的 IO 等待時間,包括磁碟IO和網路等時間,並行運算元的該項為所有子線程的耗時匯總。

  • Parallel:並行度,即當前運算元實際共有多少線程並行。

  • Skewness:偏斜度,該值越高表明子線程中吐行耗時差距越大,可能有某個執行節點或線程拖慢了整個運算元。

  • Process name:線程號,可以根據該值找到對應節點的 IP 和連接埠。

  • Change time:當前線程的吐行耗時,即吐出第一行資料和最後一行資料之間的時間差。

I/O 統計

類型

參數說明

運算元 I/O 統計

  • Output rows:吐行行數。

  • Start times:運算元被 rescan 的次數,例如 Nested loop join 運算元的右子節點會被掃描多次。

  • Max memory:運算元運行時佔用的 workarea 記憶體上限。

  • Max disk:運算元運行時佔用的最大磁碟 dump 空間。

節點屬性

節點屬性由運算元的輸出資訊和運行時資料(Other statistics)構成。

更多節點輸出資訊,請參見 OceanBase 官網文檔,例如Table Scan 運算元的屬性

運行時資料在不同運算元上表示不同的意義,是一些重要的監控指標。關於此類指標,請參見 V$SQL_MONITOR_STATNAME 視圖。

執行計畫

與 SQL 視窗中的 執行計畫 不同,執行畫像 中的執行計畫展示的是實際執行的計劃,因此包含 實際行 實際代價。ODC 通過 DBMS_XPLAN 工具包擷取當前計劃。

image

您也可以單擊右上方的 文本視圖 切換視圖,查詢更全面的計劃資訊,便於進行更進一步的 SQL 調優。

image

全鏈路診斷

當 OceanBase 版本高於 4.2.0 時(如需通過 OBProxy 串連,版本應為 OBProxy V4.2.0 及之後),ODC 支援查看 SQL 的全鏈路診斷可視化資訊。更多請參見OceanBase 全鏈路追蹤概述

ODC 對於 OceanBase 的全鏈路診斷資料,提供了 Trace 視圖 列表視圖 兩種可視化視圖。

Trace 視圖展示了 SQL 執行的總時間線,支援節點的展開和收合,且支援搜尋高亮。將滑鼠置於時間軸上,可以查看當前節點的執行節點、開始、結束時間,以及詳細資料。

image

單擊表格視圖image可以切換視圖,允許對 Span 進行各維度篩選和排序。

image

ODC 支援匯出 JSON 格式的全鏈路診斷資料,相容 OpenTracing 協議,您可以將其匯入 Jaeger 中進行進一步分析。

DB 耗時

image.png

執行記錄 頁簽中,可將滑鼠箭頭放置在 DB 耗時 資訊後的提示表徵圖上,彈出的提示資訊中可查看對 SQL 執行的全鏈路耗時資訊,以驗證各個階段的耗時與實際是否相符。

相關文檔