Be very cautious using DEFERW with BLSR unless you already have a good backup 
of the KSDS immediately before the program starts.  Recovery after a crash 
(program or system) will require a restore of the file, since DEFERW with a 
crash can leave the KSDS corrupted and sometimes unreadable, in part or in 
whole.  BTDTGTTS.

But it does speed up the update process substantially.  If you decide to use 
it, add the measurements of both the time to take a backup just before starting 
the program and the program update time to compare to the non-DEFERW time.

If you can allocate sufficient memory for buffers that will hold ALL of the 
CI's in the file, or at least all of the CI's that need an update (not always 
practical, of course), all of the updating will occur at CLOSE.

Also note that I added a comma before the DEFERW in Ron's example.

HTH

Peter

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of 
Ron Hawkins
Sent: Wednesday, April 04, 2012 12:35 AM
To: [email protected]
Subject: Re: VSAM help wanted for random reads

Frank,

It is terrific that you are getting an improvement with BLSR.

I suspect you are using a vanilla copy of an example in the BLSR manual
similar to Peter Farley's example in his post. The problem is these parms do 
not get the best performance from BLSR.

The missing value is DEFERW. This is explained at

http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA5J600/3.1.1?SH
ELF=iea2bkb3
<http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA5J600/3.1.1?S
HELF=iea2bkb3&DT=19940301112926&CASE> &DT=19940301112926&CASE=

about three quarters of the way down the page. Using Peter's example I would 
suggest you should use:

//MYKSDS   DD  SUBSYS=(BLSR,'DDNAME=MYKSDS#','RMODE31=ALL',
//             'MSG=I','BUFND=256','BUFNI=10',DEFERW)
//MYKSDS#  DD  DSN=HLQ.MY.KSDS,DISP=SHR

If you do omit DEFERW a CI will be written to the KSDS every time you update 
it. It will stay buffered for a read buffer hit, but if you update 100 records 
in the CI you will write that CI 100 times. Not a huge problem for most modern 
DASD, but if you are running synchronous remote copy it will be painful. With 
DEFERW an updated CI will written when the LSR algorithm decides it is no 
longer active enough to remain in the LSR pool. You'll also see an unusual 
effect where all changed CI are written to KSDS at end of job.

DEFERW also helps the performance of sequential inserts that do not use SIS, 
and CI and CA splits. It's an often omitted must-have for BLSR.

NB it's a good practice to set BUFNI to the number of records in the Index 
component of the KSDS, plus 10%. Again based on the example, if you have a 
three level index with 11 index set records your sequence set will pollute the 
buffer hits on the low level index set records (the high level index set record 
is probably the most touched CI in the KSDS).
--


This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to