Subject Re: IBO4
--- In IBObjects@y..., "Jason Wharton" <jwharton@i...> wrote:
> This question and the one after it are both related to what I want
to say.
> The transaction OAT processing is causing these fetches. I am not
quite done
> fully putting in place all of the nice things horizontal dataset
> will allow. All this extra fetching will go away on these datasets
with the
> benefits of this new feature because there is no point in the
fetches with
> the ability to refine a dataset. It is non refined datasets that
need to
> exhaust the cursor to allow the transaction to be released. With
> I can close and reopen a cursor anywhere in the entire dataset.
That is the
> whole point of the feature to gain an added level of freedom from
holding a
> cursor open.
> I'll explain it a bit better if I can. The new refinement is able
to open a
> cursor and walk a few records and then if necessary, like when
Locate or
> Last is called it kills the current cursor and generates a new one
where the
> records of interest are. There is no point in trying to exhaust
records out
> of a cursor when it can kill itself and regenerate itself anywhere
in the
> dataset required.
> So, what you should look forward to (hopefully before I make the
> release) is this background fetching going away. Cursors simply
need to be
> truncated (killed) so that OAT processing will go on totally
> That is a totally cheap operation under the architecture of the
> process. The only inefficiency it will impose is records that have
> batched together in network packets may have to be requested again
if a new
> boundary to the current cursor is defined.
> Perhaps you have noticed performance when doing individual fetches.
10 or so
> will go by quickly and then you hit one fetch that takes just a
pause. Each
> time records are sent, InterBase prefetches and batches them
together. If it
> gets half way through a batch and truncates the cursor it will
fetch records
> from the already prefetched batch. Not a big deal if this only
happens on a
> basis of once in 30 seconds at most. Depends on how you have tuned
> transaction timeout parameters.
> Hope this makes sense. If not, don't worry about it. I've got it all
> (fairly) under control.

What should I do?