| From: | Steve Adams |
| Date: | 31-Aug-2000 00:49 |
| Subject: | Index-organized tables |
I don't have enough information to explain the increased elapsed time. If you
run the tests again with event 10046 set at level 8 instead of level 1 (which is
how sql_trace is implemented) we should be able to explain it.
There is however a better solution here than the index organized table. Why
don't you try a single table hash cluster? That will just require 1 block get
per fetch, instead of 2 (or 3 as you had at first).
-----Original Message-----
Sent: Wednesday, 30 August 2000 23:33
Our application uses so-called dynamic constants instead of standard
Oracle constants, stored in packages and procedures, i.e. there's a simple
table
APP_CONSTANT (
constant_name varchar2(250),
constant_type varchar2(4),
value_num number,
value_date date,
value_str varchar2(250),
constraint app_constant__PK PRIMARY KEY (constant_name))
that stores all the constants used througout the application.
So, when we need the value of any constant, we just call a function
(get_num_constant, get_str_constant, etc.) with simple SELECT expression
like this:
select value_num
into XXX
from app_constant
where constant_name = :CName
and constant_type = 'NUM';
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 38244 4.48 5.25 0 0 0 38287
Fetch 38244 4.97 6.18 0 114732 0 38244
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 76488 9.45 11.43 0 114732 0 76531
Misses in library cache during parse: 0
Upon analyzing TKPROF output we realized, that total number of buffers
(query) could be descreased if using index-organized table. So it was (see
new results below), but total elapsed time surprisingly increased:
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 35505 4.65 11.55 0 0 0 35542
Fetch 35504 4.81 12.82 0 71082 0 35504
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 71009 9.46 24.37 0 71082 0 71046
Misses in library cache during parse: 0
Is there any explanation of this phenomenon?
Are there any other (better) ways of managing this table?