
|
[oracle-l]
||
[Date Prev]
[05-2006 Date Index]
[Date Next]
||
[Thread Prev]
[05-2006 Thread Index]
[Thread Next]
RE: *Measuring sql performance (elapsed time and scalability) by number of logical reads
- From: "Cary Millsap" <cary.millsap@xxxxxxxxxx>
- To: <oracle-l@xxxxxxxxxxxxx>
- Date: Tue, 2 May 2006 09:45:36 -0500
"You can't tell how long something took by counting how many times it
happened."
This one is actually my own.
Cary Millsap
Hotsos Enterprises, Ltd.
http://www.hotsos.com
Nullius in verba
Hotsos Symposium 2007 / March 4-8 / Dallas
Visit www.hotsos.com for curriculum and schedule details...
-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx
[mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of Radoulov, Dimitre
Sent: Tuesday, May 02, 2006 9:28 AM
To: Wolfgang Breitling
Cc: oracle-l@xxxxxxxxxxxxx
Subject: Re: *Measuring sql performance (elapsed time and scalability)
by number of logical reads
> To quote Cary Millsap (who, I believe quotes someone else) "you can't
tell
> how
> long something took by counting how often it occured". Trying to use
any
> count
> (lio, pio, BCHR, ...) as s substitute for elapsed time is misguided
from
> the start.
> Your summary below contains the answer. Remember
>
> response time (elapsed time) = service time + wait time.
>
> as an aside, note that there are no counts anywhere in that formula.
In
> your
> case the service time (cpu) is the difference. Due to the
peculiarities of
> cpu
> time accounting, wait time is -0.01 for both of your queries, but plan
1
> takes 4
> times the cpu to do the work.
>
> Just another example why it is important to gather system statistics
so
> that the
> CBO will consider cpu time when making a plan selection. That doesn't
mean
> he/she/it will get it right every time, but there is a better chance
with
> cpu
> costing.
Thanks,
but the CPU costing is on.
SNAME PNAME PVAL1
PVAL2
------------------------------ ------------------------------ ----------
----------------------------------------
SYSSTATS_INFO STATUS
COMPLETED
SYSSTATS_INFO FLAGS 1
SYSSTATS_MAIN SREADTIM 1.373
SYSSTATS_MAIN MREADTIM 5.556
SYSSTATS_MAIN CPUSPEED 585
SYSSTATS_MAIN MBRC 12
SYSSTATS_MAIN MAXTHR 21000192
SYSSTATS_MAIN SLAVETHR -1
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------------------
----------------------------------
| Id | Operation | Name
| Rows | Bytes | Cost (%CPU)|
------------------------------------------------------------------------
----------------------------------
| 0 | SELECT STATEMENT |
| 23 | 1472 | 43215 (1)|
|* 1 | VIEW |
| 23 | 1472 | |
|* 2 | COUNT STOPKEY |
| | | |
| 3 | VIEW |
| 199 | 10149 | |
|* 4 | SORT UNIQUE STOPKEY |
| 199 | 24079 | 43213 (1)|
| 5 | CONCATENATION |
| | | |
| 6 | TABLE ACCESS BY INDEX ROWID | LESSICO_PN
| 1 | 25 | 2 (50)|
| 7 | NESTED LOOPS |
| 1 | 62 | 15 (7)|
| 8 | NESTED LOOPS |
| 2 | 162 | 17 (6)|
| 9 | NESTED LOOPS |
| 18 | 1818 | 21 (5)|
| 10 | NESTED LOOPS |
| 1 | 121 | 95 (4)|
| 11 | NESTED LOOPS |
| 4 | 148 | 11 (10)|
| 12 | TABLE ACCESS BY INDEX ROWID| AN_TELAI
| 3 | 57 | 5 (20)|
|* 13 | INDEX RANGE SCAN | XIF04AN_TELAI
| 1 | | 4 (25)|
|* 14 | INDEX RANGE SCAN |
XIF02FILTRO_DATI_CATALOGO
| 1 | 18 | 3 (34)|
|* 15 | INDEX RANGE SCAN | PK_VP_TAVOLE
| 1 | 20 | 5 (20)|
|* 16 | INDEX RANGE SCAN | XPKASSOC_TAVOLE_PARTS
| 8 | 160 | 3 (34)|
|* 17 | INDEX RANGE SCAN | XPKAN_PARTS
| 3 | 57 | 3 (34)|
|* 18 | INDEX RANGE SCAN | XPKLESSICO_PN
| 1 | | 2 (50)|
| 19 | NESTED LOOPS |
| 1 | 121 | 95 (4)|
| 20 | NESTED LOOPS |
| 18 | 1818 | 21 (5)|
| 21 | NESTED LOOPS |
| 2 | 162 | 17 (6)|
| 22 | NESTED LOOPS |
| 1 | 62 | 15 (7)|
| 23 | NESTED LOOPS |
| 4 | 148 | 11 (10)|
| 24 | TABLE ACCESS BY INDEX ROWID | AN_TELAI
| 3 | 57 | 5 (20)|
|* 25 | INDEX RANGE SCAN | XIF04AN_TELAI
| 1 | | 4 (25)|
|* 26 | INDEX RANGE SCAN |
XIF02FILTRO_DATI_CATALOGO
| 1 | 18 | 3 (34)|
|* 27 | INDEX RANGE SCAN | XIF01LESSICO_PN
| 1 | 25 | 2 (50)|
|* 28 | INDEX RANGE SCAN | XIF01AN_PARTS
| 3 | 57 | 3 (34)|
|* 29 | INDEX RANGE SCAN | XIF01ASSOC_TAVOLE_PARTS
| 8 | 160 | 3 (34)|
|* 30 | INDEX RANGE SCAN | PK_VP_TAVOLE
| 1 | 20 | 5 (20)|
------------------------------------------------------------------------
----------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("B"."R">0)
2 - filter(ROWNUM<=23)
4 - filter(ROWNUM<=23)
13 - access("ATI"."TARGA"='FNZ8243')
14 - access("FDC"."ID_SUBCATALOGO"=0 AND
"FDC"."PV_CODE"="ATI"."PV_CODE")
15 - access("FDC"."PV_CODE"="VPT"."PV_CODE")
16 - access("VPT"."COD_TAVOLA_GRAFICA"="ATP"."COD_TAVOLA_GRAFICA")
17 - access("AP"."PART_NUMBER"="ATP"."PART_NUMBER")
filter(TRIM("AP"."PART_NUMBER") LIKE '1118647')
18 - access("LSC"."CODICE_LESSICO"="AP"."CODICE_LESSICO" AND
"LSC"."LANGUAGE_CODE"=1)
25 - access("ATI"."TARGA"='FNZ8243')
26 - access("FDC"."ID_SUBCATALOGO"=0 AND
"FDC"."PV_CODE"="ATI"."PV_CODE")
27 - access("LSC"."DS_LUNGA" LIKE '1118647' AND
"LSC"."LANGUAGE_CODE"=1)
28 - access("LSC"."CODICE_LESSICO"="AP"."CODICE_LESSICO")
filter(LNNVL(TRIM("AP"."PART_NUMBER") LIKE '1118647'))
29 - access("AP"."PART_NUMBER"="ATP"."PART_NUMBER")
30 - access("FDC"."PV_CODE"="VPT"."PV_CODE" AND
"VPT"."COD_TAVOLA_GRAFICA"="ATP"."COD_TAVOLA_GRAFICA")
filter("VPT"."COD_TAVOLA_GRAFICA"="ATP"."COD_TAVOLA_GRAFICA")
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------------------
--------------------------------
| Id | Operation | Name
|
Rows | Bytes | Cost (%CPU)|
------------------------------------------------------------------------
--------------------------------
| 0 | SELECT STATEMENT |
|
23 | 1472 | 2533 (4)|
|* 1 | VIEW |
|
23 | 1472 | |
|* 2 | COUNT STOPKEY |
|
| | |
| 3 | VIEW |
|
199 | 10149 | |
|* 4 | SORT UNIQUE STOPKEY |
|
199 | 24079 | 2532 (4)|
|* 5 | HASH JOIN |
|
199 | 24079 | 2530 (4)|
|* 6 | INDEX FAST FULL SCAN | XIF01LESSICO_PN
|
2493 | 62325 | 74 (10)|
|* 7 | HASH JOIN |
|
20168 | 1890K| 2453 (4)|
| 8 | NESTED LOOPS |
|
20168 | 1516K| 2192 (2)|
| 9 | NESTED LOOPS |
|
1070 | 60990 | 27 (4)|
| 10 | NESTED LOOPS |
|
4 | 148 | 11 (10)|
| 11 | TABLE ACCESS BY INDEX ROWID| AN_TELAI
|
3 | 57 | 5 (20)|
|* 12 | INDEX RANGE SCAN | XIF04AN_TELAI
|
1 | | 4 (25)|
|* 13 | INDEX RANGE SCAN | XIF02FILTRO_DATI_CATALOGO
|
1 | 18 | 3 (34)|
|* 14 | INDEX RANGE SCAN | PK_VP_TAVOLE
|
254 | 5080 | 5 (20)|
|* 15 | INDEX RANGE SCAN | XPKASSOC_TAVOLE_PARTS
|
19 | 380 | 3 (34)|
| 16 | INDEX FAST FULL SCAN | XPKAN_PARTS
|
168K| 3129K| 236 (14)|
------------------------------------------------------------------------
--------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("B"."R">0)
2 - filter(ROWNUM<=23)
4 - filter(ROWNUM<=23)
5 - access("LSC"."CODICE_LESSICO"="AP"."CODICE_LESSICO")
filter("LSC"."DS_LUNGA" LIKE '1118647' OR
TRIM("AP"."PART_NUMBER")
LIKE '1118647')
6 - filter("LSC"."LANGUAGE_CODE"=1)
7 - access("AP"."PART_NUMBER"="ATP"."PART_NUMBER")
12 - access("ATI"."TARGA"='FNZ8243')
13 - access("FDC"."ID_SUBCATALOGO"=0 AND
"FDC"."PV_CODE"="ATI"."PV_CODE")
14 - access("FDC"."PV_CODE"="VPT"."PV_CODE")
15 - access("VPT"."COD_TAVOLA_GRAFICA"="ATP"."COD_TAVOLA_GRAFICA")
Regards,
Dimitre
--
http://www.freelists.org/webpage/oracle-l
--
http://www.freelists.org/webpage/oracle-l
|

|