Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: SELECT statement efficiency question
Mladen Gogala @ 9/04/2007 3:17 AM:
> On Sun, 08 Apr 2007 06:37:37 -0700, Charles Hooper wrote:
>
>> Good advice given so far. I would caution against creating too many >> indexes, as this will likely negatively impact performance of other >> parts of the system
I was just cruising by to see what might be being said about oracle-l when I noticed the post above. I see that Charles has already shown that there is indeed a very significant impact on I/O, because the foreground processes doing the inserts and deletes need to read extra index blocks into the buffer cache prior to each change. This may not involve real physical I/O, but it does require latching if nothing else.
What has not yet been said is that in OLTP environments over-indexing also limits concurrency in redo generation and in the application of changes to the data blocks. Because the redo records have more change vectors, and more buffer locks and thus more latches need to be taken for change application, the redo latches and buffer locks are held for longer than they would otherwise be. The increased latching and locking and the increased latch and lock retention in both the log buffer and the buffer cache reduce scalability.
@ Regards, @ Steve Adams @ http://www.ixora.com.au/ - For DBAs @ http://www.christianity.net.au/ - For allReceived on Mon Apr 09 2007 - 00:13:17 CDT