oceanbase 性能監控03 -sql trace

sql trace

SQL TRACE能夠交互式的提供上一次執行的SQL請求執行過程信息及各階段的耗時。

 

sql trace開關

sql trace功能默認時關閉的,可通過session變量來控制其關閉和打開;

set ob_enable_trace_log = 0/1;

 

show trace

當sql trace功能打開後,執行需要診斷的SQL, 然後通過show trace能夠查看該SQL執行的信息。
這些執行信息以表格方式輸出,每列說明如下

列名

說明

Title

記錄執行過程某一個階段點

KeyValue

記錄某一個階段點產生的一些執行信息

Time

記錄上一個階段點到這次階段點執行耗時

如下一節舉例中show trace結果:

Title列從上往下看,可以看出整個SQL執行經歷的各個階段,從而知道該SQL真實的執行路徑, 比如舉例結果中有經過resolve,transform,optimizer,code generate, 說明該SQL重新生成了計劃,沒有命中plan cache。

KeyValue列,可以看出一些執行信息,幫助我們進行問題排查, 比如1) 記錄的trace_id, 可以方便我們在sql_audit中指定trace_id爲過濾條件,快速找到該SQL執行信息,同時也可以通過該trace_id快速查找相關的observer日誌;2)記錄的plan id可以方便在v$plan_cache_plan_explain中查看plan cache中緩存的具體執行計劃;3)phy_plan_type告訴我們該次執行計劃的類型, 1表示本地計劃, 2表示遠程計劃,3表示分佈式計劃。裏面還有很多類似信息都可以輔助我們進行SQL診斷。

Time列,可以知道上一個階段點到這次階段點執行耗時,比如,resolve end對應的206us表示的是resolve begin到resolve耗時。如果某個SQL執行很慢,則通過查看time列,能夠快速定位出具體是哪個階段執行較慢,然後再去具體分析。比如舉例結果中,執行耗時主要在生成計劃過程中,因此我們只需要分析爲什麼沒有命中plan cache,有可能是計劃淘汰後SQL第一次執行,也有可能是Plan Cache不支持的SQL;

舉例

  1. 打開sql trace

OceanBase (root@test)> set ob_enable_trace_log = 1;

 

  1. 執行目標SQL

OceanBase (root@test)> select * from t1 where c1 = 1;

+----+------+------+
| c1 | c2   | c3   |
+----+------+------+
|  1 |    1 |    1 |
+----+------+------+

 

  1. 顯示trace

OceanBase (root@test)> show trace;
+------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+
| Title                        | KeyValue                                                                                                                                                               | Time |
+------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+
| process begin                | in_queue_time:20, receive_ts:1523761166127727, enqueue_ts:1523761166127730                                                                                             | 0    |
| query begin                  | trace_id:"YC4186451FC11-000569D9EEAEE567"                                                                                                                              | 8    |
| parse begin                  | stmt:"select * from t1 where c1 = 1", stmt_len:29                                                                                                                      | 51   |
| pc get plan begin            |                                                                                                                                                                        | 13   |
| transform_with_outline begin |                                                                                                                                                                        | 24   |
| transform_with_outline end   |                                                                                                                                                                        | 61   |
| resolve begin                |                                                                                                                                                                        | 30   |
| resolve end                  |                                                                                                                                                                        | 206  |
| transform begin              |                                                                                                                                                                        | 28   |
| transform begin              |                                                                                                                                                                        | 46   |
| transform end                |                                                                                                                                                                        | 101  |
| optimizer begin              |                                                                                                                                                                        | 3    |
| get location cache begin     |                                                                                                                                                                        | 50   |
| get location cache end       |                                                                                                                                                                        | 23   |
| optimizer end                |                                                                                                                                                                        | 315  |
| cg begin                     |                                                                                                                                                                        | 1    |
| cg end                       |                                                                                                                                                                        | 102  |
| execution begin              | arg1:false, end_trans_cb:false                                                                                                                                         | 102  |
| sql start trans begin        |                                                                                                                                                                        | 4    |
| sql start trans end          | ret:0, trans_id:{hash:676060840998016888, inc:51422, addr:{ip:"100.81.252.17", port:50200}, t:1523761163082001}, timeout:1523761266127727, start_time:1523761166127727 | 8    |
| do open plan begin           | plan_id:635                                                                                                                                                            | 1    |
| sql start stmt begin         |                                                                                                                                                                        | 5    |
| sql start stmt end           | ret:0, autocommit:true, phy_plan_type:1, stmt_type:1, safe_weak_read_snapshot:0, is_inner_query:false, retry_times:0                                                   | 15   |
| execute plan begin           |                                                                                                                                                                        | 1    |
| execute plan end             |                                                                                                                                                                        | 2    |
| sql start participant begin  |                                                                                                                                                                        | 1    |
| sql start participant end    | ret:0, trans_id:{hash:7055361525995234482, inc:51424, addr:{ip:"100.81.252.17", port:50200}, t:1523761166128081}                                                       | 68   || table scan begin             |                                                                                                                                                                        | 24   |
| table scan end               |                                                                                                                                                                        | 18   |
| do open plan end             |                                                                                                                                                                        | 2    |
| start_close_plan begin       |                                                                                                                                                                        | 52   |
| sql end participant begin    |                                                                                                                                                                        | 12   |
| sql end participant end      | ret:0, is_rollback:false                                                                                                                                               | 3    |
| sql end stmt begin           |                                                                                                                                                                        | 1    |
| sql end stmt end             | ret:0, is_rollback:false                                                                                                                                               | 2    |
| start_close_plan end         |                                                                                                                                                                        | 0    |
| start_auto_end_plan begin    |                                                                                                                                                                        | 2    |
| sql start trans begin        |                                                                                                                                                                        | 1    |
| sql start trans end          | ret:0, is_rollback:false, is_need_disconnect:false, callback_type:0                                                                                                    | 27   |
| start_auto_end_plan end      | is_async_callback:false                                                                                                                                                | 3    |
| execution end                |                                                                                                                                                                        | 2    |
| query end                    |                                                                                                                                                                        | 53   |
+------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章