亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

ORACLE數(shù)據(jù)庫(kù)查看執(zhí)行計(jì)劃的方法

2020-07-26 14:31:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
一、什么是執(zhí)行計(jì)劃(explain plan)

執(zhí)行計(jì)劃:一條查詢語(yǔ)句在ORACLE中的執(zhí)行過(guò)程或訪問(wèn)路徑的描述。

二、如何查看執(zhí)行計(jì)劃

1: 在PL/SQL下按F5查看執(zhí)行計(jì)劃。第三方工具toad等。

很多人以為PL/SQL的執(zhí)行計(jì)劃只能看到基數(shù)、優(yōu)化器、耗費(fèi)等基本信息,其實(shí)這個(gè)可以在PL/SQL工具里面設(shè)置的。可以看到很多其它信息,如下所示

clip_image002

2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下執(zhí)行下面步驟

復(fù)制代碼 代碼如下:

SQL>EXPLAIN PLAN FOR
SELECT * FROM SCOTT.EMP; --要解析的SQL腳本
SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

clip_image004

clip_image006

3: 在SQL*PLUS下(有些命令在PL/SQL下無(wú)效)執(zhí)行如下命令:

復(fù)制代碼 代碼如下:

SQL>SET TIMING ON             --控制顯示執(zhí)行時(shí)間統(tǒng)計(jì)數(shù)據(jù)
SQL>SET AUTOTRACE ON EXPLAIN       --這樣設(shè)置包含執(zhí)行計(jì)劃、腳本數(shù)據(jù)輸出,沒(méi)有統(tǒng)計(jì)信息
SQL>執(zhí)行需要查看執(zhí)行計(jì)劃的SQL語(yǔ)句
SQL>SET AUTOTRACE OFF           --不生成AUTOTRACE報(bào)告,這是缺省模式
SQL> SET AUTOTRACE ON           --這樣設(shè)置包含執(zhí)行計(jì)劃、統(tǒng)計(jì)信息、以及腳本數(shù)據(jù)輸出
SQL>執(zhí)行需要查看執(zhí)行計(jì)劃的SQL語(yǔ)句
SQL>SET AUTOTRACE OFF
SQL> SET AUTOTRACE TRACEONLY      --這樣設(shè)置會(huì)有執(zhí)行計(jì)劃、統(tǒng)計(jì)信息,不會(huì)有腳本數(shù)據(jù)輸出
SQL>執(zhí)行需要查看執(zhí)行計(jì)劃的SQL語(yǔ)句
SQL>SET AUTOTRACE TRACEONLY STAT --這樣設(shè)置只包含有統(tǒng)計(jì)信息
SQL>執(zhí)行需要查看執(zhí)行計(jì)劃的SQL語(yǔ)句

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

參考文檔:SQLPlus User's Guide and Reference Release 11.1

clip_image008

注意:PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,像SET AUTOTRACE ON 就如此,在PL/SQL Developer工具下執(zhí)行此命令會(huì)報(bào)錯(cuò)

SQL> SET AUTOTRACE ON;

Cannot SET AUTOTRACE

4:SQL_TRACE可以作為參數(shù)在全局啟用,也可以通過(guò)命令形式在具體SESSION啟用

4.1 在全局啟用,在參數(shù)文件(pfile/spfile)中指定SQL_TRACE =true,在全局啟用SQL_TRACE時(shí)會(huì)導(dǎo)致所有進(jìn)程活動(dòng)被跟蹤,包括后臺(tái)進(jìn)程以及用戶進(jìn)程,通常會(huì)導(dǎo)致比較嚴(yán)重的性能問(wèn)題,所以在生產(chǎn)環(huán)境要謹(jǐn)慎使用。

提示:通過(guò)在全局啟用SQL_TRACE, 我們可以跟蹤到所有后臺(tái)進(jìn)程的活動(dòng),很多在文檔中的抽象說(shuō)明,通過(guò)跟蹤文件的實(shí)時(shí)變化,我們可以清晰的看到各個(gè)進(jìn)程間的緊密協(xié)調(diào)。

4.2在當(dāng)前SESSION級(jí)別設(shè)置,通過(guò)跟蹤當(dāng)前進(jìn)程可以發(fā)現(xiàn)當(dāng)前操作的后臺(tái)數(shù)據(jù)庫(kù)遞歸活動(dòng)(這在研究數(shù)據(jù)庫(kù)新特性時(shí)尤其有效),研究SQL執(zhí)行時(shí),發(fā)現(xiàn)后臺(tái)

錯(cuò)誤等。

復(fù)制代碼 代碼如下:

SQL> ALTER SESSION SET SQL_TRACE=TRUE;
SQL> SELECT * FROM SCOTT.EMP;
SQL> ALTER SESSION SET SQL_TRACE =FALSE;

那么此時(shí)如何查看相關(guān)信息?不管你在SQL*PLUS抑或PL/SQL DEVELOPER工具里面執(zhí)行上面腳本過(guò)后都看不到什么信息,你可以通過(guò)下面腳本查詢到trace日志信息
復(fù)制代碼 代碼如下:

SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T

clip_image010

TKPROF的幫助信息如下

復(fù)制代碼 代碼如下:

TKPROF 選項(xiàng)
選項(xiàng) 說(shuō)明
TRACEFILE 跟蹤輸出文件的名稱
OUTPUTFILE 已設(shè)置格式的文件的名稱
SORT=option 語(yǔ)句的排序順序
PRINT=n 打印前 n 個(gè)語(yǔ)句
EXPLAIN=user/password 以指定的用戶名運(yùn)行 EXPLAIN PLAN
INSERT=filename 生成 INSERT 語(yǔ)句
SYS=NO 忽略作為用戶 sys 運(yùn)行的遞歸 SQL 語(yǔ)句
AGGREGATE=[Y|N] 如果指定 AGGREGATE = NO TKPROF 不聚集相同
SQL 文本的多個(gè)用戶
RECORD=filename 記錄在跟蹤文件中發(fā)現(xiàn)的語(yǔ)句
TABLE=schema.tablename 將執(zhí)行計(jì)劃放入指定的表而不是缺省的PLAN_TABLE

可以在操作系統(tǒng)中鍵入 tkprof 以獲得所有可用選項(xiàng)和輸出的列表
注 排序選項(xiàng)有

排序 選項(xiàng)說(shuō)明
prscnt execnt fchcnt 調(diào)用分析執(zhí)行提取的次數(shù)
prscpu execpu fchcpu 分析執(zhí)行提取所占用的 CPU 時(shí)間
prsela exela fchela 分析執(zhí)行提取所占用的時(shí)間
prsdsk exedsk fchdsk 分析執(zhí)行提取期間的磁盤(pán)讀取次數(shù)
prsqry exeqry fchqry 分析執(zhí)行提取期間用于持續(xù)讀取的緩沖區(qū)數(shù)
prscu execu fchcu 分析執(zhí)行提取期間用于當(dāng)前讀取的緩沖區(qū)數(shù)
prsmis exemis 分析執(zhí)行期間庫(kù)高速緩存未命中的次數(shù)
exerow fchrow 分析執(zhí)行期間處理的行數(shù)
userid 分析游標(biāo)的用戶的用戶 ID

TKPROF 統(tǒng)計(jì)數(shù)據(jù)
Count: 執(zhí)行調(diào)用數(shù)
CPU: CPU 的使用秒數(shù)
Elapsed: 總共用去的時(shí)間
Disk: 物理讀取次數(shù)
Query: 持續(xù)讀取的邏輯讀取數(shù)
Current: 當(dāng)前模式下的邏輯讀取數(shù)
Rows: 已處理行數(shù)
TKPROF 統(tǒng)計(jì)信息
統(tǒng)計(jì) 含義
Count 分析或執(zhí)行語(yǔ)句的次數(shù)以及為語(yǔ)句發(fā)出的提取調(diào)用數(shù)
CPU 每個(gè)階段的處理時(shí)間以秒為單位如果在共享池中找到該語(yǔ)句對(duì)于分析階段為 0
Elapsed 占用時(shí)間以秒為單位通常不是非常有用因?yàn)槠渌M(jìn)程影響占用時(shí)間
Disk 從數(shù)據(jù)庫(kù)文件讀取的物理數(shù)據(jù)塊如果該數(shù)據(jù)被緩沖則該統(tǒng)計(jì)可能很低
Query 為持續(xù)讀取檢索的邏輯緩沖區(qū)通常用于 SELECT 語(yǔ)句
Current 在當(dāng)前模式下檢索的邏輯緩沖區(qū)通常用于 DML 語(yǔ)句
Rows 外部語(yǔ)句所處理的行對(duì)于 SELECT 語(yǔ)句在提取階段顯示它對(duì)于 DML 語(yǔ)句在執(zhí)行階段顯示它

Query 和Current 的總和為所訪問(wèn)的邏輯緩沖區(qū)的總數(shù)

執(zhí)行下面命令:tkprof D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc h:/out.txtoutputfile explain=etl/etl

clip_image012

執(zhí)行上面命令后,可以查看生成的文本文件
復(fù)制代碼 代碼如下:

TKPROF: Release 10.2.0.1.0 - Production on 星期三 5月 23 16:56:41 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
********************************************************************************
ALTER SESSION SET SQL_TRACE = TRUE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
begin :id := sys.dbms_transaction.local_transaction_id; end;
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 2
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 0 0 2
Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
SELECT *
FROM
SCOTT.EMP
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 7 0 14
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 7 0 14
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
Rows Execution Plan
------- ---------------------------------------------------
SELECT STATEMENT MODE: CHOOSE
TABLE ACCESS MODE: ANALYZED (FULL) OF 'EMP' (TABLE)
********************************************************************************
ALTER SESSION SET SQL_TRACE = FALSE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 5 0.00 0.00 0 0 0 0
Execute 5 0.00 0.00 0 0 0 2
Fetch 1 0.00 0.00 0 7 0 14
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 11 0.00 0.00 0 7 0 16
Misses in library cache during parse: 2
Misses in library cache during execute: 1
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 0 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
user SQL statements in session.
internal SQL statements in session.
SQL statements in session.
statement EXPLAINed in this session.
********************************************************************************
Trace file: D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
Trace file compatibility: 10.01.00
Sort options: default
session in tracefile.
user SQL statements in trace file.
internal SQL statements in trace file.
SQL statements in trace file.
unique SQL statements in trace file.
SQL statements EXPLAINed using schema:
ETL.prof$plan_table
Default table was used.
Table was created.
Table was dropped.
lines in trace file.
elapsed seconds in trace file.

4.3跟蹤其它用戶的進(jìn)程,在很多時(shí)候我們需要跟蹤其它用戶的進(jìn)程,而不是當(dāng)前用戶,可以通過(guò)ORACLE提供的系統(tǒng)包
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION來(lái)完成。
例如:
復(fù)制代碼 代碼如下:

SELECT SID, SERIAL#, USERNAME FROM V$SESSION WHERE USERNAME = 'ETL'
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,TRUE);
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,FALSE);

5 利用10046事件
復(fù)制代碼 代碼如下:

ALTER SESSION SET TRACEFILE_IDENTIFIER = 10046;
ALTER SESSION SET EVENTS='10046 trace name context forever, level 8';
SELECT * FROM SCOTT.EMP;
ALTER SESSION SET EVENTS ='10046 trace name context off';
然后你可以用腳本查看追蹤文件的位置
SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T
查詢結(jié)果為wgods_ora_28279.trc文件, 但是去相應(yīng)目錄卻沒(méi)有找到對(duì)應(yīng)的追蹤文件,而是如下trace文件:wgods_ora_28279_10046.trc

6 利用10053事件

有點(diǎn)類(lèi)似10046,在此略過(guò)、

7 系統(tǒng)視圖

通過(guò)下面一些系統(tǒng)視圖,你可以看到一些零散的執(zhí)行計(jì)劃的相關(guān)信息,有興趣的話可以多去研究一下。
復(fù)制代碼 代碼如下:

SELECT * FROM V$SQL_PLAN
SELECT * FROM V$RSRC_PLAN_CPU_MTH
SELECT * FROM V$SQL_PLAN_STATISTICS
SELECT * FROM V$SQL_PLAN_STATISTICS_ALL
SELECT * FROM V$SQLAREA_PLAN_HASH
SELECT * FROM V$RSRC_PLAN_HISTORY

三、看懂執(zhí)行計(jì)劃

1.執(zhí)行順序

執(zhí)行順序的原則是:由上至下,從右向左

由上至下:在執(zhí)行計(jì)劃中一般含有多個(gè)節(jié)點(diǎn),相同級(jí)別(或并列)的節(jié)點(diǎn),靠上的優(yōu)先執(zhí)行,靠下的后執(zhí)行

從右向左:在某個(gè)節(jié)點(diǎn)下還存在多個(gè)子節(jié)點(diǎn),先從最靠右的子節(jié)點(diǎn)開(kāi)始執(zhí)行。

當(dāng)然,你在PL/SQL工具中也可以通過(guò)它提供的功能來(lái)查看執(zhí)行順序。如下圖所示:

clip_image014

2.執(zhí)行計(jì)劃中字段解釋

clip_image016

SQL>
名詞解釋:
recursive calls           遞歸調(diào)用
db block gets           從buffer cache中讀取的block的數(shù)量當(dāng)前請(qǐng)求的塊數(shù)目,當(dāng)前模式塊意思就是在操作中正好提取的塊數(shù)目,而不是在一致性讀的情況下而產(chǎn)生的正常情況下,一個(gè)查詢提取的塊是在查詢查詢開(kāi)始的那個(gè)時(shí)間點(diǎn)上存在的數(shù)據(jù)庫(kù),當(dāng)前塊是在這個(gè)時(shí)候存在數(shù)據(jù)塊,而不是這個(gè)時(shí)間點(diǎn)之前或者之后的的數(shù)據(jù)塊數(shù)目。
consistent gets          從buffer cache中讀取的undo數(shù)據(jù)的block的數(shù)量數(shù)據(jù)請(qǐng)求總數(shù)在回滾段Buffer中的數(shù)據(jù)一致性讀所需要的數(shù)據(jù)塊,,這里的概念是在你處理你這個(gè)操作的時(shí)侯需要在一致性讀狀態(tài)上處理多個(gè)塊,這些塊產(chǎn)生的主要原因是因?yàn)槟阍诓樵冞^(guò)程中,由于其它會(huì)話對(duì)數(shù)據(jù) 塊進(jìn)行操作,而對(duì)所要查詢的塊有了修改,但是由于我們的查詢是在這些修改之前調(diào)用的,所要需要對(duì)回滾 段中的數(shù)據(jù)塊的前映像進(jìn)行查詢,以保證數(shù)據(jù)的一致性。這樣就產(chǎn)生了一致性讀。

physical reads           物理讀 就是從磁盤(pán)上讀取數(shù)據(jù)塊的數(shù)量。其產(chǎn)生的主要原因是:
                  1:在數(shù)據(jù)庫(kù)高速緩存中不存在這些塊。
                  2:全表掃描
                  3:磁盤(pán)排序
redo size              DML生成的redo的大小
sorts (memory)           在內(nèi)存執(zhí)行的排序量
sorts (disk)            在磁盤(pán)執(zhí)行的排序量
2091 bytes sent via SQL*Net to client     從SQL*Net向客戶端發(fā)送了2091字節(jié)的數(shù)據(jù)
416 bytes received via SQL*Net from client  客戶端向SQL*Net發(fā)送了416字節(jié)的數(shù)據(jù)。
參考文檔:SQLPlus User's Guide and Reference Release 11.1

clip_image018

db block gets 、 consistent gets 、 physical reads這三者的關(guān)系可以概括為:邏輯讀指的是ORACLE從內(nèi)存讀到的數(shù)據(jù)塊塊數(shù)量,一般來(lái)說(shuō)是:
consistent gets + db block gets. 當(dāng)在內(nèi)存中找不到所需要的數(shù)據(jù)塊的話,就需要從磁盤(pán)中獲取,于是就產(chǎn)生了物理讀。
3.具體內(nèi)容查看
1> Plan hash Value
這一行是這一條語(yǔ)句的的hash值,我們知道ORACLE對(duì)每一條ORACLE語(yǔ)句產(chǎn)生的執(zhí)行計(jì)劃放在SHARE POOL里面,第一次要經(jīng)過(guò)硬解析,產(chǎn)生hash值。下次再執(zhí)行時(shí)比較hash值,如果相同就不會(huì)執(zhí)行硬解析。
2> COST

COST沒(méi)有單位,是一個(gè)相對(duì)值,是SQL以CBO方式解析執(zhí)行計(jì)劃時(shí),供ORACLE來(lái)評(píng)估CBO成本,選擇執(zhí)行計(jì)劃用的。沒(méi)有明確的含義,但是在對(duì)比是就非常有用。
公式:COST=(Single Block I/O COST + MultiBlock I/O Cost + CPU Cost)/ Sreadtim

3> 對(duì)上面執(zhí)行計(jì)劃列字段的解釋:
Id: 執(zhí)行序列,但不是執(zhí)行的先后順序。執(zhí)行的先后根據(jù)Operation縮進(jìn)來(lái)判斷(采用最右最上最先執(zhí)行的原則看層次關(guān)系,在同一級(jí)如果某個(gè)動(dòng)作沒(méi)有子ID就最先執(zhí)行。一般按縮進(jìn)長(zhǎng)度來(lái)判斷,縮進(jìn)最大的最先執(zhí)行,如果有2行縮進(jìn)一樣,那么就先執(zhí)行上面的。)
    Operation:當(dāng)前操作的內(nèi)容。
    Name:操作對(duì)象
    Rows:也就是10g版本以前的Cardinality(基數(shù)),Oracle估計(jì)當(dāng)前操作的返回結(jié)果集行數(shù)。
    Bytes:表示執(zhí)行該步驟后返回的字節(jié)數(shù)。
    Cost(CPU):表示執(zhí)行到該步驟的一個(gè)執(zhí)行成本,用于說(shuō)明SQL執(zhí)行的代價(jià)。
    Time:Oracle 估計(jì)當(dāng)前操作的時(shí)間。
4.謂詞說(shuō)明:
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("B"."MGR" IS NOT NULL)
4 - access("A"."EMPNO" = "B"."MGR")
    Access: 表示這個(gè)謂詞條件的值將會(huì)影響數(shù)據(jù)的訪問(wèn)路勁(全表掃描還是索引)。
    Filter:表示謂詞條件的值不會(huì)影響數(shù)據(jù)的訪問(wèn)路勁,只起過(guò)濾的作用。
    在謂詞中主要注意access,要考慮謂詞的條件,使用的訪問(wèn)路徑是否正確。
5、 動(dòng)態(tài)分析
如果在執(zhí)行計(jì)劃中有如下提示:
Note
------------
-dynamic sampling used for the statement
這提示用戶CBO當(dāng)前使用的技術(shù),需要用戶在分析計(jì)劃時(shí)考慮到這些因素。 當(dāng)出現(xiàn)這個(gè)提示,說(shuō)明當(dāng)前表使用了動(dòng)態(tài)采樣。我們從而推斷這個(gè)表可能沒(méi)有做過(guò)分析。
這里會(huì)出現(xiàn)兩種情況:
(1) 如果表沒(méi)有做過(guò)分析,那么CBO可以通過(guò)動(dòng)態(tài)采樣的方式來(lái)獲取分析數(shù)據(jù),也可以或者正確的執(zhí)行計(jì)劃。
(2) 如果表分析過(guò),但是分析信息過(guò)舊,這時(shí)CBO就不會(huì)在使用動(dòng)態(tài)采樣,而是使用這些舊的分析數(shù)據(jù),從而可能導(dǎo)致錯(cuò)誤的執(zhí)行計(jì)劃。

四、表訪問(wèn)方式

1.Full Table Scan (FTS) 全表掃描

2.Index Lookup 索引掃描
There are 5 methods of index lookup:
index unique scan --索引唯一掃描
通過(guò)唯一索引查找一個(gè)數(shù)值經(jīng)常返回單個(gè)ROWID,如果存在UNIQUE或PRIMARY KEY約束(它保證了語(yǔ)句只存取單行的話),ORACLE
經(jīng)常實(shí)現(xiàn)唯一性掃描
Method for looking up a single key value via a unique index. always returns a single value, You must supply AT LEAST the leading column of the index to access data via the index.
index range scan --索引局部掃描
Index range scan is a method for accessing a range values of a particular column. AT LEAST the leading column of the index must be supplied to access data via the index. Can be used for range operations (e.g. > < <> >= <= between) .
使用一個(gè)索引存取多行數(shù)據(jù),在唯一索引上使用索引范圍掃描的典型情況是在謂詞(WHERE 限制條件)中使用了范圍操作符號(hào)(如>, < <>, >=, <=,BWTEEN)
index full scan --索引全局掃描
Full index scans are only available in the CBO as otherwise we are unable to determine whether a full scan would be a good idea or not. We choose an index Full Scan when we have statistics that indicate that it is going to be more efficient than a Full table scan and a sort. For example we may do a Full index scan when we do an unbounded scan of an index and want the data to be ordered in the index order.
index fast full scan --索引快速全局掃描,不帶order by情況下常發(fā)生
Scans all the block in the index, Rows are not returned in sorted order, Introduced in 7.3 and requires V733_PLANS_ENABLED=TRUE and CBO, may be hinted using INDEX_FFS hint, uses multiblock i/o, can be executed in parallel, can be used to access second column of concatenated indexes. This is because we are selecting all of the index.
index skip scan --索引跳躍掃描,where條件列是非索引的前提情況下常發(fā)生
Index skip scan finds rows even if the column is not the leading column of a concatenated index. It skips the first column(s) during the search.
3.Rowid 物理ID掃描
This is the quickest access method available.Oracle retrieves the specified block and extracts the rows it is interested in. --Rowid掃描是最快的訪問(wèn)數(shù)據(jù)方式
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲天堂五月天| 在线精品国产亚洲| 天天做天天爱天天高潮| 久草热8精品视频在线观看| 素人av在线| 亚洲永久精品视频| 国产精品欧美在线| 亚洲欧洲精品一区二区三区| 青青草原在线亚洲| 人九九综合九九宗合| 日韩免费电影一区| 日韩欧美在线视频观看| 国产精品99久久久精品无码| 亚洲午夜无码久久久久| 亚洲永久字幕| 久久99精品久久久久久野外| 99久久99久久精品| 亚洲国产精品美女| 奇米影视亚洲狠狠色| 日韩福利在线播放| 国产无遮无挡120秒| 国产永久精品大片wwwapp| 国产精品一区二区x88av| 中文精品无码中文字幕无码专区| 美国毛片一区二区三区| 男人天堂2017| 91久久中文字幕| 国产精品成人一区二区不卡| 麻豆av电影在线观看| eeuss鲁片一区| 成年人视频网站免费| 中文字幕有码热在线视频| 77777在线| 91成人精品观看| 欧美国产日韩一区二区三区| 成人小电影网站| 国产成人精品久久二区二区91| 欧美日本一道本| 国产性生交xxxxx免费| 亚洲欧美中文在线视频| 在线视频中文字幕第一页| 能看的毛片网站| 日韩成人午夜| 欧美成人四级hd版| 日韩欧美亚洲日产国产| 日本在线不卡一区二区| 色婷婷av一区二区三区gif| 水蜜桃在线视频| 国产区精品视频| 无码人妻一区二区三区精品视频| 欧美一区二区免费在线观看| 99国精产品一二二线| 一区二区三区日韩精品视频| 日韩高清国产精品| 北条麻妃一区二区三区在线观看| 欧美激情 亚洲a∨综合| 国产中年熟女高潮大集合| 亚洲最大色网站| 九七电影院97理论片久久tvb| 成人高h视频在线| 午夜精品视频| 成人亚洲综合| 凹凸日日摸日日碰夜夜爽1| 免费日韩av| 岳张嘴把我的精子吞下去| 免费亚洲精品视频| eeuss影院在线观看| 精品国一区二区三区| 99久久精品国产成人一区二区| 国产欧美日韩成人| www.99久久热国产日韩欧美.com| 国产视频亚洲色图| 久久国产劲爆∧v内射| 岛国av一区二区| 自拍偷拍 国产| 777琪琪电影午夜理伦片| 国产精品欧美极品| 北条麻妃亚洲一区| 国产成人aa在线观看网站站| 99精品视频免费全部在线| 中文字幕精品视频在线观看| 美女精品在线| 五月婷婷视频在线观看| 最新日韩欧美| 在线观看中文字幕av| 日韩在线播放视频| 国产a一区二区| 国产精品免费视频网站| 伦伦影院午夜理论片| 性欧美18一19性猛交| 免费在线看大片无需流量| 114国产精品久久免费观看| 亚洲毛片av| 天天影视涩香欲综合网| 成人影院www在线观看| 啪啪亚洲精品| 欧美一级黄视频| 日韩电影免费观看中文字幕| 97夜夜澡人人双人人人喊| 日韩写真福利视频在线| 亚洲精品在线国产| 国产高清不卡一区二区| 夜色福利资源站www国产在线视频| av观看在线免费| 午夜精品婷婷| av加勒比在线| 你懂的在线视频| 4438x成人网最大色成网站| 激情视频免费在线| 日韩欧美高清在线播放| 在线播放第一页| 久久一区二区三区四区| 国产亚洲色婷婷久久99精品91| 久久精品国产综合精品| 日本三级中文字幕| 国产精品久久精品| 四虎国产精品成人免费入口| 久久九九全国免费精品观看| 天天综合在线观看| jizz视频在线观看| 国产精品国产三级国产a| 男人插女人下面视频| 极品颜值美女露脸啪啪| 精品国产91亚洲一区二区三区婷婷| 日韩一二三区| www夜片内射视频日韩精品成人| 日韩一区二区三区资源| 林ゆな中文字幕一区二区| 中文字幕乱码在线播放| 中文字幕精品无码亚| 7777精品伊久久久大香线蕉语言| 91官网在线免费观看| 精品人妻一区二区三区日产乱码| 亚洲国产成人一区二区三区| 久久精品久久精品| 日韩在线一区视频| 一级 黄 色 片一| 亚洲欧美日韩综合| 97精品资源在线观看| 成人精品视频99在线观看免费| 日韩中文字幕区一区有砖一区| 欧美日本免费一区二区三区| 国产精品1024久久| 69堂视频在线观看国产| 亚洲一卡二卡三卡四卡五卡| 国产在线观看www| 视频国产一区二区三区| 欧美人在线视频| 国产丝袜精品第一页| 国产理论片在线观看| 欧美不卡123| 国产精品国产三级国产aⅴ| www.夜色| 精品国产青草久久久久96| 91精品国产乱码久久| 精品久久久无码人妻字幂| 国产精品日本一区二区三区在线| 免费av一级电影| 最新欧美人z0oozo0| 欧美精选一区二区| www久久久| 精品99一区二区| 激情小视频网站| 色噜噜狠狠色综合中国| 国产精品嫩草影视| 日韩三级中文字幕| 自己做鸭怎么接单寻找客源| 九色视频在线观看免费播放| 91九色蝌蚪porny| 无码日韩人妻精品久久蜜桃| 丝袜美腿美女被狂躁在线观看| 日韩三级视频中文字幕| 亚洲女性喷水在线观看一区| 九九视频在线播放| 成人激情视频在线观看| 欧美精品1区| 欧美 日韩 人妻 高清 中文| 日韩在线观看免费全集电视剧网站| 国产黄色片中文字幕| 黄色一级片在线看| 日韩激情av在线免费观看| 成人在线视频一区二区| 午夜影院观看视频免费| 最好看的2019的中文字幕视频| 天天插天天操| 综合av在线| 免费男女羞羞的视频网站中文字幕妖精视频| 成人开心激情| 精品国产综合久久| 最近中文字幕一区二区三区| 欧美成人a交片免费看| 亚洲熟女www一区二区三区| 亚洲大胆在线| 日韩精品中文字| 日日躁天天躁狠狠躁| 波多野结衣一二三四区| 国产日韩欧美综合一区| 一区二区视频| 中国极品少妇xxxx| 欧美一区三区四区| 同心难改在线观看| 国产精品劲爆视频| 国产理论在线观看| 日韩精品视频免费播放| brazzers精品成人一区| 激情成人午夜视频| 亚洲美女尤物影院| 丁香六月天婷婷| 亚洲图区综合| 亚洲欧美国产精品专区久久| 女优一区二区三区| www.天天干.com| 尤物视频网站| 亚洲码在线观看| 免费成人高清| 色欲av无码一区二区三区| 中字幕一区二区三区乱码| 久久天堂电影| 好操啊在线观看免费视频| www.亚洲欧美| 97久久国产亚洲精品超碰热| 日韩av资源| 久久视频免费在线观看| 日韩新的三级电影| 欧美日韩中文另类| 加勒比海盗1在线观看免费国语版| 亚洲精品影视在线| 色偷偷福利视频| 国产欧美婷婷中文| 欧美精品久久一区| 精品国产乱码91久久久久久网站| 欧美狂野另类xxxxoooo| 精品黑人一区二区三区久久| 美女一区二区三区在线观看| 理论片午午伦夜理片在线播放| 色av一区二区| 欧美日韩中文精品| 免费在线观看的黄色网址| 久久久久亚洲AV成人无在| 97se亚洲国产综合自在线| 亚洲欧美欧美一区二区三区| 日韩欧美卡一卡二| 紧缚奴在线一区二区三区| 亚洲欧美另类综合偷拍| 亚洲精品成人在线| 999在线观看精品免费不卡网站| 日日夜夜操操操| 人人干人人干人人| 亚洲欧美精品伊人久久| 久久久久久久一区| 日韩欧美国产成人| 亚洲欧美中文日韩在线v日本| 久久丫精品国产亚洲av不卡| 国产成人亚洲综合色影视| 亚洲国产成人精品一区二区三区| 亚洲欧洲一区二区三区在线观看| 美女免费视频一区二区| 国产三级精品网站| 欧美男gay| 精品视频在线免费看| 日本欧美在线视频免费观看| 搡老女人一区二区三区视频tv| 久久综合入口| 人妻激情偷乱视频一区二区三区| 丁香花在线观看完整版电影| 欧美性受xxxx黒人xyx性爽| 欧美精品一区二区高清在线观看| 欧美成人小视频| 99精品视频免费看| 欧美 日韩 国产 成人 在线观看| 欧美亚洲二区| 欧洲视频在线免费观看| 午夜成人亚洲理伦片在线观看| 蜜臀久久99精品久久一区二区| 日韩在线视频一区二区三区| 成年网站免费入口在线观看| 欧美日韩视频精品一区二区| 性欧美18一19内谢| 亚洲色成人网站www永久四虎| 久久精品国产成人一区二区三区| 国产精品盗摄一区二区三区| 日本成人免费| 91亚洲国产成人精品性色| 国产女人18毛片水真多18| 五月天婷亚洲天综合网鲁鲁鲁| 欧美猛交ⅹxxx乱大交视频| 精品久久久中文| 欧美极品jizzhd欧美18| 日韩一级淫片| 手机精品视频在线观看| 销魂美女一区二区| 一本一道久久a久久精品| 国产69精品久久久| 国产精品久久毛片a| 亚洲精品福利在线观看| 国产在线制服美女| 亚洲a视频在线| 九九色在线视频| 色综合天天综合网天天狠天天| 手机毛片在线观看| japanese23hdxxxx日韩| 黄色片视频免费| 国产麻豆精品久久| 国产精品沙发午睡系列| 蜜臀久久99精品久久久| 性欧美xxx极品另类| 丁香婷婷成人| 26uuu另类亚洲欧美日本一| 国产乱在线观看视频| 午夜激情小视频| 欧美精品久久久久久久久久| 嫩草影视亚洲| 日韩av超清在线观看| 在线免费视频福利| 伊人亚洲福利一区二区三区| 在线视频你懂得一区| 91香蕉视频污在线| 国产91在线|亚洲| 欧洲国产伦久久久久久久| 色吊丝在线永久观看最新版本| 中文成人综合网| 亚洲精品亚洲人成人网| 亚洲福利一区二区三区| 欧美日韩一区二区高清| 国产精品国产三级欧美二区| 亚洲美女性生活视频| 国产亚洲一区二区手机在线观看| 久久6免费视频|