Subject | Re: [IB-Architect] Optimizing cross-joins / aggregate-selects / no-fields from relation used - when possible ? |
---|---|
Author | Jim Starkey |
Post date | 2002-12-08T15:17:07Z |
At 10:48 AM 12/8/2002 +0100, Arno Brinkman wrote:
still necessary to fetch its data and run the expression against it.
And, yes, the key-data can certainly be different from the index
if the index entry belonged to a different version of the index.
that a second record on a data page will always find it in cache,
which is worth a lot. But it must fetch and decode the record in
every case.
I took a radically different approach in Netfrastructure. Netfrastructure
caches actual records and the access structure in memory, using a
fairly hairy aging algorithm with garbage collection to maintain a
large but bounded cache. It is also multi-generational, but only
in memory, not on disk. So record references and the equivalent
of VIO_chase_record_version operate purely in memory (after first
reference, of course). The only things that are accessed directly
out of disk cache are index pages, which get no benefit from living
in memory. The net result is that when it's running on a machine
with a hundred buck's worth of memory is that it never touches the
disk.
Jim Starkey
>Sorry, but after chasing down the appropriate record version, it's
>I saw that first is called the procedure "VIO_chase_record_version" and
>after that the data is fetched. When we have only an "index-lookup" couldn't
>not just exit after the VIO_chase_record_version? Is there a way that the
>key-data can be different than in the index? I make an test-version and saw
>that there's little speed-up, so maybe interesting enough to look if it
>isn't possible to do with "only-index-lookup".
>
still necessary to fetch its data and run the expression against it.
And, yes, the key-data can certainly be different from the index
if the index entry belonged to a different version of the index.
>By processing record indirectly through the bitmap, it does guarentee
>With pitty i meant there could be a speed-increment because no data-pages
>had to be accessed for the unneeded data, but as i understand it must be for
>the record_version. Reading a data-page looks a big cost for me.
>
that a second record on a data page will always find it in cache,
which is worth a lot. But it must fetch and decode the record in
every case.
I took a radically different approach in Netfrastructure. Netfrastructure
caches actual records and the access structure in memory, using a
fairly hairy aging algorithm with garbage collection to maintain a
large but bounded cache. It is also multi-generational, but only
in memory, not on disk. So record references and the equivalent
of VIO_chase_record_version operate purely in memory (after first
reference, of course). The only things that are accessed directly
out of disk cache are index pages, which get no benefit from living
in memory. The net result is that when it's running on a machine
with a hundred buck's worth of memory is that it never touches the
disk.
Jim Starkey