国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle中使用DBMS_XPLAN處理執行計劃詳解

2020-07-26 14:19:17
字體:
來源:轉載
供稿:網友

DBMS_XPLAN是Oracle提供的一個用于查看SQL計劃,包括執行計劃和解釋計劃的包;在以前查看SQL執行計劃的時候,我都是使用set autotrace命令,不過現在看來,DBMS_XPLAN包給出了更加簡化的獲取和顯示計劃的方式。

這5個函數分別對應不同的顯示計劃的方式,DBMS_XPLAN包不僅可以獲取解釋計劃,它還可以用來輸出存儲在AWR,SQL調試集,緩存的SQL游標,以及SQL基線中的語句計劃,實現如上的功能,通常會用到一下5個方法:

1.DISPLAY
2.DISPLAY_AWR
3.DISPLAY_CURSOR
4.DISPLAY_PLAN
5.DISPLAY_SQL_PLAN_BASELINE
6.DISPLAY_SQLSET

下面將重點討論關于DBMS_XPLAN包在解釋計劃和執行計劃上的應用。

來看一個經常使用的查看某條語句的解釋計劃示例:

復制代碼 代碼如下:

SQL> explain plan for select * from scott.emp;

Explained.

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   532 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   532 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------

8 rows selected.

-- 對應autotrace實現
SQL> set autotrace traceonly explain


上例中使用了dbms_xplan.display方法來顯示PLAN_TABLE中保存的解釋計劃,如果想要顯示執行計劃,就需要使用到DMBS_XPLAN.DISPLAY_CURSOR方法了,DMBS_XPLAN.DISPLAY_CURSOR調用簽名:

復制代碼 代碼如下:

DBMS_XPLAN.DISPLAY_CURSOR(
   sql_id        IN  VARCHAR2  DEFAULT  NULL,
   child_number  IN  NUMBER    DEFAULT  NULL,
   format        IN  VARCHAR2  DEFAULT  'TYPICAL');

sql_id表示存儲在cursor cache中的SQL語句的id,child_number用于指示緩存sql語句計劃的子id,format參數用于控制包含在輸出中的信息類型,官檔的參數如下:

1.BASIC: 顯示最少的信息,只包括操作類型,ID名稱和選項。
2.TYPICAL: 默認值,顯示相關信息以及某些附加的顯示選項,如分區和并發使用等。
3.SERIAL: 與TYPICAL類型相似,區別是它不包括并發的信息,即使是并行執行的計劃。
4.ALL: 顯示最多的信息,包含了TYPICAL的全部以及更多的附加信息,如別名和遠程調用等。

除了以上的基本的四種輸出格式外,format還有一些附加的選項可用于定制化輸出行為,使用中可以通過逗號和空格分隔來聲明多個關鍵字,同時可以使用”+”和”-”符號來包含或排除相應的顯示元素,這些附加的選項在官檔中也有記載:

1.ROWS

主站蜘蛛池模板: 客服| 新兴县| 石楼县| 盐津县| 达拉特旗| 山西省| 阿图什市| 潮州市| 申扎县| 河南省| 始兴县| 贵港市| 武鸣县| 芒康县| 虹口区| 翁源县| 兴安县| 阿鲁科尔沁旗| 安义县| 盐边县| 门头沟区| 镇康县| 南安市| 武邑县| 长兴县| 贡嘎县| 石棉县| 夏邑县| 天台县| 肥东县| 万源市| 白银市| 石门县| 合水县| 手游| 日照市| 攀枝花市| 开平市| 潼关县| 光泽县| 临海市|