新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)OceanBase教程:OceanBaseSQLTrace
SQL Trace 能夠交互式的提供上一次執(zhí)行的 SQL 請求執(zhí)行過程信息及各階段的耗時。

陽高ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
SQL Trace 開關(guān)
SQL Trace 功能默認(rèn)是關(guān)閉的,可通過 session 變量來控制其打開和關(guān)閉。
- 打開 SQL Trace 功能的語句如下:
obclient>SET ob_enable_trace_log = 1;
- 關(guān)閉 SQL Trace 功能的語句如下:
obclient>SET ob_enable_trace_log = 0;
Show Trace
當(dāng) SQL Trace 功能打開后,執(zhí)行需要診斷的 SQL,然后通過 ?SHOW TRACE? 能夠查看該 SQL 執(zhí)行的信息。這些執(zhí)行信息以表格方式輸出,每列說明如下:
|
列名 |
說明 |
|---|---|
|
Title |
記錄執(zhí)行過程某一個階段點 |
|
KeyValue |
記錄某一個階段點產(chǎn)生的一些執(zhí)行信息 |
|
Time |
記錄上一個階段點到這次階段點執(zhí)行耗時(us) |
示例
- 打開 SQL Trace:
obclient> SET ob_enable_trace_log = 1; - 執(zhí)行目標(biāo) SQL:
obclient> CREATE TABLE t1(c1 INT,c2 INT,c3 INT); Query OK, 0 rows affected (0.02 sec) obclient> INSERT INTO t1 VALUES(1,1,1); Query OK, 1 rows affected (0.02 sec) obclient> INSERT INTO t1 VALUES(2,2,2); Query OK, 1 rows affected (0.02 sec) obclient>SELECT * FROM t1 WHERE c1 = 1; +----+------+------+ | c1 | c2 | c3 | +----+------+------+ | 1 | 1 | 1 | +----+------+------+ - 顯示 Trace:
- Title 列包含整個 SQL 執(zhí)行經(jīng)歷的各個階段的信息以及該 SQL 真實的執(zhí)行路徑。上述示例的結(jié)果中有經(jīng)過 Resolve、Transform、Optimizer 和 Code Generate 四個流程,說明該 SQL 重新生成了計劃,沒有命中 plan cache。
- KeyValue 列包含一些執(zhí)行信息,可以用于排查問題:
- ?
trace_id? 可以作為 sql_audit 中的過濾條件,快速找到該 SQL 執(zhí)行信息,同時也可以通過該 ?trace_id? 快速查找相關(guān)的 observer 日志。 - ?
plan_id? 可以用于在 ?v$plan_cache_plan_explain? 中查看 plan cache 中緩存的具體執(zhí)行計劃。 - ?
phy_plan_type? 指出該次執(zhí)行計劃的類型(1 表示本地計劃/2 表示遠程計劃/3 表示分布式計劃),可以輔助 SQL 診斷。
- ?
- Time 列顯示上一個階段點到這次階段點執(zhí)行耗時。例如,resolve end 對應(yīng)的 206 us 表示的是 resolve begin 到 resolve 耗時。如果某個 SQL 執(zhí)行很慢,則通過查看 time 列,能夠快速定位出具體是哪個階段執(zhí)行較慢,然后再進行具體分析。此例中,執(zhí)行耗時主要在生成計劃過程中,因此只需要分析沒有命中 plan cache 的原因,可能是計劃淘汰后 第一次執(zhí)行該 SQL,或是 plan cache 不支持的 SQL。
obclient> SHOW TRACE;
+------------------------------+---------------------------------------------------------------------------------------------------+
| TITLE | KEYVALUE | TIME |
+------------------------------+----------------------------------------------------------------------------+------+
| process begin | in_queue_time:17, receive_ts:1612420489580707, enqueue_ts:1612420489580709 | 0 |
| query begin | trace_id:YB42AC1E87E6-0005B8AB2D57844F | 1 |
| parse begin | stmt:"set ob_enable_trace_log = 1", stmt_len:27 | 62 |
| pc get plan begin | NULL | 9 |
| pc get plan end | NULL | 19 |
| transform_with_outline begin | NULL | 1 |
| transform_with_outline end | NULL | 31 |
| resolve begin | NULL | 21 |
| resolve end | NULL | 33 |
| execution begin | arg1:false, end_trans_cb:false | 14 |
| start_auto_end_plan begin | NULL | 39 |
| start_auto_end_plan end | NULL | 1 |
| execution end | NULL | 11 |
| query end | NULL | 39 |
+------------------------------+---------------------------------------------------------------------------------------------+------+-
示例中 ?
SHOW TRACE? 結(jié)果說明如下:
分享標(biāo)題:創(chuàng)新互聯(lián)OceanBase教程:OceanBaseSQLTrace
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/cdhicgo.html


咨詢
建站咨詢
