Question:
How long does it take Oracle 8.0.5 to execute a commit? I want
to
avoid running out of resources required to run a large query by using
commits every n records but also want to minimizing the execution time
of the query by not doing more commits than necessary.
Answer 1:
Oracle 8 uses the same fast commit logic it used with ver 7, namely,
on
a commit Oracle flushes the redo log buffer to disk, but allows the
database writer to get around to writing the changed data whenever
it
gets around to it (lazy writes). Because a commit requires writing
to
the redo log it is relatively expensive so you are correct in that
you
do not want to over commit, but I think you want to base your commit
frequency based on the likelihood that another session will want to
update one of the rows your process updated and how long it is
acceptable for them to wait. That and the total number of bytes
worth
of rollback you want to limit a transaction to using.
Answer 2:
This is in addition to Mark's advice, which is correct, but if you are
just
running a "query" as your question states you don't have to worry
about
commits as you are not altering/updating data, basically you are only
reading the data.
Answer 3:
Not always true. You could be doing block cleanout .........