Re: SHARED_POOL_SIZE Increase Makes a Bstat Little Worse - Why?
Date: 1997/07/17
Message-ID: <33ce3c0d.0_at_news1.ibm.net>
Hi (to Jonathan Lewis),
>
If the version_count is high, it would be a particular giveaway that
the OCI is making you apparently identical statements be treated as
different statements, and causing real re-parsing to take place.
<
There is only one stmt that has a version_count > 1 (it is 2)
and it not a stmt I did. It looks like some oracle thing.
>
The original though was basically prompted by checking the number of
parse calls (360K) against the parse time (6,900 seconds) which
indicates a lot of real parsing as opposed to shared-pool hits.
Basically, your batch doesn't seem to be doing a huge amount of work
(for the machine size), but is spending far too much time parsing.
<
How do you tell if 'parse count' or 'parse time cpu' is a lot?
What do you think of these numbers below (from what you said to try)? Could it be that I am doing so well on our sql stmt.s that increasing the shared pool size does not help? Could this be true? or can you burst my bubble?
I guess the next thing I wonder about is: Is there a way to tell what the 'size' of this v$sqlarea or shared sql area is that is being used so I can just use that to create the proper shared_pool_size?
Thanks for your help.
SQL> select count(*) from v$sqlarea;
COUNT(*)
9464
1 select executions, count(*) from v$sqlarea
2* group by executions
SQL> /
EXECUTIONS COUNT(*)
---------- ---------
1 6714 <--- looked bad...until I saw the bottom 2 537 3 1055 4 319 5 101 6 114 7 59 8 49 9 22 10 11 11 17 12 12 13 7 14 12 15 5 16 4 17 5 18 3 19 5 20 8 21 9
EXECUTIONS COUNT(*)
---------- ---------
22 7 23 7 24 4 25 1 26 6 27 6 28 6 29 1 31 8 32 3 33 1 34 6 35 3 36 3 37 2 38 2 39 2 40 3 41 8 42 2 43 5
EXECUTIONS COUNT(*)
---------- ---------
44 9 45 1 46 3 47 4 49 5 50 1 51 3 54 1 55 3 57 2 58 4 60 1 61 2 63 1 67 1 70 2 73 1 74 3 75 1 76 1 77 2
EXECUTIONS COUNT(*)
---------- ---------
78 1 80 1 81 2 82 1 84 3 85 1 94 1 95 1 96 1 99 1 100 1 102 1 103 1 105 1 108 2 109 2 111 1 114 1 115 1 117 1 119 3
EXECUTIONS COUNT(*)
---------- ---------
122 2 125 1 126 1 130 4 131 1 136 2 137 1 138 2 147 5 148 3 150 1 151 2 154 1 157 1 160 1 161 2 162 1 165 1 168 2 169 1 170 1
EXECUTIONS COUNT(*)
---------- ---------
174 1 175 1 176 1 179 1 182 1 190 1 197 2 200 1 203 1 208 1 210 1 211 4 215 1 219 3 222 1 229 1 230 2 234 1 235 2 239 1 240 15
EXECUTIONS COUNT(*)
---------- ---------
255 1 262 1 287 1 319 1 326 1 365 1 369 1 379 1 410 2 428 1 431 1 440 1 456 1 468 5 481 1 513 1 519 4 540 1 569 1 603 1 647 1
EXECUTIONS COUNT(*)
---------- ---------
679 2 716 1 735 2 746 2 752 1 755 2 765 1 776 1 806 1 827 1 900 1 914 1 938 1 1012 1 1029 1 1101 1 1104 1 1171 1 1176 1 1189 11 1225 1
EXECUTIONS COUNT(*)
---------- ---------
1252 1 1267 1 1287 2 1302 1 1319 1 1348 1 1355 1 1366 1 1397 1 1428 1 1887 1 2120 1 2123 1 2124 2 2125 1 2327 1 5738 1 5974 1 23179 1 25812 1 43717 1
EXECUTIONS COUNT(*)
---------- ---------
150671 1 178528 1
191 rows selected.
SQL> select sql_text from v$sqlarea
2 where executions = '178528';
SQL_TEXT
SELECT * from dol.pjc_tbl WHERE ROWID = :1
SQL> select sql_text, version_count, executions, loads, parse_calls,
buffer_gets
2 from v$sqlarea
3 where version_count > 1;
SQL_TEXT
--- VERSION_COUNT EXECUTIONS LOADS PARSE_CALLS BUFFER_GETSReceived on Thu Jul 17 1997 - 00:00:00 CEST
------------- ---------- --------- ----------- -----------
begin DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); end; 2 4 2 3 127 SQL> select executions, sql_text from v$sqlarea 2 where executions > '1500' order by executions desc; EXECUTIONS
----------
SQL_TEXT
------------------------------------------------------------------------------
----------------------
355464 SELECT * from dol.pjc_tbl WHERE ROWID = :1 150903 SELECT * from fac.bom_tbl WHERE ROWID = :1 43717 SELECT * from fac.est_tbl WHERE ROWID = :1 FOR UPDATE NOWAIT 25812 SELECT * from fac.por_tbl WHERE ROWID = :1 23179 SELECT * from fac.tra_tbl WHERE ROWID = :1 13153 SELECT * from fac.pij_tbl WHERE ROWID = :1 5876 EXECUTIONS
----------
SQL_TEXT
------------------------------------------------------------------------------
----------------------
SELECT * from dol.pin_tbl WHERE ROWID = :1 3304 SELECT --+ INDEX_ASC( fac.pij_tbl fac.pij_trans_key ) ROWID FROM fac.pij_tbl WHERE (trans_typ e = :1 AND job_level_0 = :2 AND job_level_1 = :3 AND job_level_2 = :4 AND job_level_3 = :5 AND job_l evel_4 = :6 AND job_level_5 = :7 AND budget_cat = :8 AND traveler_no = :9 AND traveler_oper_no = :10 AND po_no_1 = :11 AND po_item_no_1 = :12) ORDER BY trans_type, job_level_0, job_level_1, job_level _2, job_level_3, job_level_4, job_level_5, budget_cat, traveler_no, traveler_oper_no, po_no_1, po_it em_no_1 ... the rest are like the last one. stantow_at_ibm.net