HP OpenVMS Systemsask the wizard |
The Question is:
Wizards,
I have two RMS questions.
1.) For an indexed file with multiple bucket sizes, is
RMS limited to one bucket per buffer even if the
buffer is not full? For example, if one area has
bucket size 18 and another 9, can RMS put two of the
size 9 buckets in one buffer? If the large bucket is
not divisible by the smaller bucket (say sizes 15 and
12) will RMS place partial buckets in various
buffers?
2.) When doing asynchronous record I/O, does RMS do all
of the related lock management asynchronously, just
some of it, or none at all? I would like to know if
my code is forced to wait for anything at all in
asynchronous mode.
Many thanks for your time.
The Answer is :
>1.) For an indexed file with multiple bucket sizes, is
> RMS limited to one bucket per buffer even if the
> buffer is not full? For example, if one area has
Yes. The application tells RMS how many buffers to allocate
and RMS does so using the largest bucket size in the file.
This may cause a waste, notably of VIRTUAL memory on a VAX.
The the Alpha, with its 8KB page size, it will also waste
some physical memory due to the roundup.
This should NOT be taken as an indication to make all bucket
sizes equally large. For example, it may well be, that the
alternate key data (SIDR) bucket size should be as large as
possible to combat excess duplicate keys, while the primary
key data bucket is made as small as reasonabe to ensure minimal
IO time during updates.
> 2.) When doing asynchronous record I/O, does RMS do all
> of the related lock management asynchronously, just
With Async record IO, the user code will only be woken up when
all the work requested is done. Internally RMS will decompose
the work in multiple little steps (get lock, read bucket, get
other lock,...) for which RMS will 'stall' transparently.
Your code will have to wait for the requested operation to be
completed before it can reuse the RAB used for the operation.
The code is free to start an other operation using a different
RAB on an other file, or even on the same file if FAB$V_MSE was used.
hth,
Hein.
|