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.
|