HP OpenVMS Systems

ask the wizard
Content starts here

RMS Questions?

» close window

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.
 

answer written or last revised on ( 21-APR-1998 )

» close window