W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
使用 EXPLAIN 命令可以展示出當(dāng)前優(yōu)化器所生成的執(zhí)行計劃,但由于統(tǒng)計信息變化、用戶 session 變量設(shè)置變化等,會造成該 SQL 在計劃緩存中實際對應(yīng)的計劃可能與 EXPLAIN 的結(jié)果并不相同。為了確定該 SQL 在系統(tǒng)中實際使用的執(zhí)行計劃,需要進一步分析計劃緩存中的物理執(zhí)行計劃。
用戶可以通過查詢 (g)v$plan_cache_plan_explain
視圖來展示某條 SQL 在計劃緩存中的執(zhí)行計劃。
如下例所示:
obclient>VIEW_DEFINITION='SELECT *
FROM oceanbase.gv$plan_cache_plan_explain
WHERE IP =host_ip() AND PORT = rpc_port()'
參數(shù)解釋如下表:
字段名稱 |
類型 |
描述 |
---|---|---|
TENANT_ID |
bigint(20) |
租戶 ID |
IP |
varchar(32) |
IP 地址 |
PORT |
bigint(20) |
端口號 |
PLAN_ID |
bigint(20) |
執(zhí)行計劃的 ID |
OPERATOR |
varchar(128) |
operator 的名稱 |
NAME |
varchar(128) |
表的名稱 |
ROWS |
bigint(20) |
預(yù)估的結(jié)果行數(shù) |
COST |
bigint(20) |
預(yù)估的代價 |
PROPERTY |
varchar(256) |
對應(yīng) operator 的信息 |
OceanBase 數(shù)據(jù)庫每個服務(wù)器的計劃緩存都是獨立的。用戶可以直接訪問 v$plan_cache_plan_stat
視圖查詢本服務(wù)器上的計劃緩存并提供 tenant_id 和需要查詢的 SQL 字符串(可以使用模糊匹配),查詢該條 SQL 在計劃緩存中對應(yīng)的 plan_id。
obclient>SELECT * FROM v$plan_cache_plan_stat WHERE tenant_id= 1001
AND STATEMENT LIKE 'INSERT INTO T1 VALUES%'\G
***************************1. row ***************************
tenant_id: 1001
svr_ip:100.81.152.44
svr_port:15212
plan_id: 7
sql_id:0
type: 1
statement: insert into t1 values(1)
plan_hash:1
last_active_time:2016-05-28 19:08:57.416670
avg_exe_usec:0
slowest_exe_time:1970-01-01 08:00:00.000000
slowest_exe_usec:0
slow_count:0
hit_count:0
mem_used:8192
1 rowin set (0.01 sec)
獲得 plan_id 后,用戶可以使用 tenant_id 和 plan_id 訪問 v$plan_cache_plan_explain
來展示該執(zhí)行計劃。
注意
這里展示的計劃為物理執(zhí)行計劃,在算子命名上會與 EXPLAIN 所展示的邏輯執(zhí)行計劃有所不同。
obclient>SELECT * FROM v$plan_cache_plan_explain
WHERE tenant_id = 1001 AND plan_id = 7;
+-----------+---------------+-------+---------+--------------------+------+------+------+
| TENANT_ID | IP | PORT | PLAN_ID | OPERATOR | NAME | ROWS | COST |
+-----------+---------------+-------+---------+--------------------+------+------+------+
| 1001 | 100.81.152.44 | 15212 | 7 | PHY_ROOT_TRANSMIT | NULL | 0 | 0 |
| 1001 | 100.81.152.44 | 15212 | 7 | PHY_INSERT | NULL | 0 | 0 |
| 1001 | 100.81.152.44 | 15212 | 7 | PHY_EXPR_VALUES | NULL | 0 | 0 |
+-----------+---------------+-------+---------+--------------------+------+------+------+
3 rows in set (0.01 sec)
注意
如果訪問gv$plan_cache_plan_explain
,必須給定 IP、port、tenant_id 和 plan_id 這四列的值。
如果訪問v$plan_cache_plan_explain
,必須給定 tenant_id 和 plan_id 的值,否則系統(tǒng)將返回空集。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: