Java Mailing List Archive

http://www.dba.5341.com/

Home » Home (12/2007) » oracle-l »

Re: MERGE statement - where time goes ?

Alberto Dell'Era

2007-07-23

Replies:

Milen,

MERGE T_F_MESSUNG_DLZ_2 (cr=27552 pr=7876 pw=0 time=52349971 us)
1378  VIEW (cr=4752 pr=602 pw=0 time=11221649 us)

So for updating/inserting the rows, you performed

( 7876- 602) / 7876 = 92% of the physical reads.

From

db file sequential read               7861     0.28      50.54

92% of 50.54 is 46.68 seconds, which is very close to the 41.128322
seconds you waited (you cannot expect a perfect match of course
when using averages).

Consider that when updating/inserting, you have to update the indexes also;
that explains why you performed (27552-4752) consistent gets
and ( 7876- 602) physical reads for a "mere" 1378 rows.

(you have also to update the rollback segments blocks, that
aren't necessarily cached - but "usually" the indexes contribute more).

hth
Alberto

On 7/23/07, Milen Kulev <makulev@(protected):
> Hello Albeto,
> Thank you for your prompt reply .
> OK, after selecting/filterung which rows should be inserted und which rows should be updated (VIEW step),
> The rows should be physically written to the table. This operation takes
> 52349971- 11221649 microseconds = 41128322 microseconds
> VIEW step filtered 1378 rows. Time to update/insert a row would be:
>
> 41128322 microseconds/1378 rows = 29846 microseconds ~ 29 ms, just for writing one row ?!
> At the time of issuing the statement there were no locks (or other serialization mechanism) on the table
> T_F_MESSUNG_DLZ_2.
> GlancePlus showed me at that time maximum ~ 400 I/Os per second (Max is ~ 3000 I/Os per second). So, there was no I/O
> subsystem botthelneck
> Furthermore, the sum of sizes of all T_F_MESSUNG_DLZ_2 columns is ~ 1k (9xx bytes).
> How is it possible to take 29 ms to update/insert 1k ?
(snip)

--
Alberto Dell'Era
"the more you know, the faster you go"
--
http://www.freelists.org/webpage/oracle-l


©2008 dba.5341.com - Jax Systems, LLC, U.S.A.