先找到那条慢SQL的SQL_ID 和PLAN_ID 。假设你的SQL是 select * from t1, t2 where ... ,执行后立即查询:
sql
SELECT SQL_ID, PLAN_ID, ELAPSED_TIME, QUEUE_TIME, EXECUTE_TIME FROM oceanbase.GV$OB_SQL_AUDIT WHERE QUERY_SQL LIKE ‘%你的SQL特征%’ ORDER BY REQUEST_TIME DESC LIMIT 1;
拿到PLAN_ID 后,用DBMS_XPLAN 展示详细计划 :
sql
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AUDIT(‘你的SQL_ID’));
重点关注输出中的 Plan Type 是 LOCAL (本地)、REMOTE (远程)还是 DISTRIBUTED (分布式) 。如果变成了DISTRIBUTED ,大概率是数据被拆到了多个节点,引入了网络开销