|
All, Since I've been going on about record blocking being the important part of things (at least as far a batch processing using the READ opcode goes), here is a link to IBM's document about it: http://www-912.ibm.com/s_dir/slkbase.NSF/0/d6738e1cd37e1f33862565c2007ce f79?OpenDocument and some of the relevant portions are: Blocking works well only if one reads many records sequentially because the block of records read are from some position in the file and the next N records. Blocking is established at full open for the file that is being opened, and all reads (READ verbs, not random positioning verbs such as CHAIN) get an entire block of records. ... The use of the blocking can greatly improve performance, and most applications are tolerant to minor timing problems. Batch program defaults that systems use are often too small as they are often a compromise between what is best for batch and keeping blocks within reasonable size to minimize timing problems. If the compiler has defaulted the open for sequential only, the system chooses a block size such that the number of records fits in a block of 4K. This default relates to the IBM(r) System/38(tm) implementation and has never been changed. Making this blocking factor larger typically greatly improves batch performance but it may make some interactive application worse; therefore, it was not changed. The override database file (OVRDBF) command is used to control both the size of the block and to turn blocking on and off. The sequential only (SEQONLY) parameter can override the program specification of blocking to not block (SEQONLY *NO) or change the size of the block to match the program intent. ... To change the number of records in the block to match the maximum size of a single system I/O operation. The value that will usually result in the best system performance, has proven to be the size that is closest to the maximum size of a single system disk I/O. The size for CISC system is 32,767 (32K), and for RISC systems is 131,072 (128 K). The SEQONLY parameter is expressed in the number of records. So one must calculate number of records from the ideal block size by knowing the physical record length and dividing that into the I/O size. The calculation of physical record length can be somewhat difficult. The length of the data, at least an additional database status byte, and the record may have additional information on variable length fields, or null value indicators. A reasonable approximation is 32000(128000)/rcdlen+1 if no nulls or variable length, else 28000(110000)/reclen. The best length is one that is less than the machine maximum. Rory p.s. I think READE, READPE and even READP count as random reads, rather than sequential reads - can anyone confirm this?
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.