W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使用 EXPLAIN 命令可以展示出當(dāng)前優(yōu)化器所生成的執(zhí)行計(jì)劃,但由于統(tǒng)計(jì)信息變化、用戶 session 變量設(shè)置變化等,會(huì)造成該 SQL 在計(jì)劃緩存中實(shí)際對(duì)應(yīng)的計(jì)劃可能與 EXPLAIN 的結(jié)果并不相同。為了確定該 SQL 在系統(tǒng)中實(shí)際使用的執(zhí)行計(jì)劃,需要進(jìn)一步分析計(jì)劃緩存中的物理執(zhí)行計(jì)劃。
用戶可以通過(guò)查詢 (g)v$plan_cache_plan_explain
視圖來(lái)展示某條 SQL 在計(jì)劃緩存中的執(zhí)行計(jì)劃。
如下例所示:
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) |
端口號(hào) |
PLAN_ID |
bigint(20) |
執(zhí)行計(jì)劃的 ID |
OPERATOR |
varchar(128) |
operator 的名稱 |
NAME |
varchar(128) |
表的名稱 |
ROWS |
bigint(20) |
預(yù)估的結(jié)果行數(shù) |
COST |
bigint(20) |
預(yù)估的代價(jià) |
PROPERTY |
varchar(256) |
對(duì)應(yīng) operator 的信息 |
OceanBase 數(shù)據(jù)庫(kù)每個(gè)服務(wù)器的計(jì)劃緩存都是獨(dú)立的。用戶可以直接訪問(wèn) v$plan_cache_plan_stat
視圖查詢本服務(wù)器上的計(jì)劃緩存并提供 tenant_id 和需要查詢的 SQL 字符串(可以使用模糊匹配),查詢?cè)摋l SQL 在計(jì)劃緩存中對(duì)應(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 訪問(wèn) v$plan_cache_plan_explain
來(lái)展示該執(zhí)行計(jì)劃。
注意
這里展示的計(jì)劃為物理執(zhí)行計(jì)劃,在算子命名上會(huì)與 EXPLAIN 所展示的邏輯執(zhí)行計(jì)劃有所不同。
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)
注意
如果訪問(wèn)gv$plan_cache_plan_explain
,必須給定 IP、port、tenant_id 和 plan_id 這四列的值。
如果訪問(wèn)v$plan_cache_plan_explain
,必須給定 tenant_id 和 plan_id 的值,否則系統(tǒng)將返回空集。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: