tnt400.com - AS/400 Tips And Techniques

Sponsored by news400.com

This page is a discussion on the mentioned topic.
Most of the answers are in their original posted form, including any technical/spelling/grammatical errors.
No guarantees are expressed or implied. :-)
Comments, corrections, concerns about this tip?

Got another AS/400 question? Ask it here


What's New?
See what's new at Tips-N-Tech.

AS/400 Tips-N-Tech
AS/400 tips, techniques, and FAQ. Updated frequently.
CODEPage/400
All the code samples you can eat! RPG, CL, DDS, etc. etc.
AS/400 FAQs
The official news400.com FAQs.






All AS/400 Tip Categories / AS/400 Programming / Reusing deleted records - OK?


Question:

Anyone have experience with reuse deleted records ? I understand the concept and how to setup, but I've heard horror stories about databases with it turned on ? We have multiple(4-5) databases with over 90 million records with 8-10 logicals over each one. We are also using a product called MIMIX that provides database mirroring at an application level between to 530's soon to be 640's. What does this do to my performance over time ??? Any thoughts ???? Is reuse deleted records a stable option for databases that large ?


Answer(s):



if you are using any logicals with LIFO sequencing then you cant use reuse as the LIFO depends upon the Relative record number to work...probably a good idea to check this first.




I have seen a case were reuse caused problems. A batch program received records from a bisysc line and wrote records to several data files. It would periodically submit other batch jobs to process it's output files. These programs would then process the records and delete them. This created large numbers of deleted records so we changed these files to reuese deleted records. Duplicate records started appearing. We never determined whether duplicates were being wrtten or deletes were failing. We never saw any triplicates or more and duplicates were very rare (one an hour with several thousand an hour being processed.) Changed the files back and the problem dissapeared. This was 4 years ago on a B60 V2 somthing. I have see reuse used extensively on other machines with no problems.




When I used it at a client site I didn't think through the ramifications and had problems for a few days until it came to light. The program reads an unkeyed physical file from start to end (by RRN), then deletes all records for the next cycle. Problem turned out to be that records that were loaded in a certain sequence fell out of sequence since the indexes (RRN) went all over the place, so think it out first. BTW, performance did improve for those couple of days. Ever try to do a DSPPFM on a physical whose first record (because of deletes) was in the hundreds of thousands? If not, you have to wait sometimes minutes for the screen to come up.




We have used reusedlt since it was introduced on the System/38 with no problems. One of our clients though some times uses relative record number to remove blocks of records added in error. Reusedlt will not work for that.




We have used the REUSEDLT(*YES) parameters ever since it was introduced in V2R2. The Database Guide lists the warnings, but I will reiterate some of the more important ones. You cannot specify re-use delete if the physical file has any access path that specifies anything other than default ordering for duplicate keys. All LF38 files have an implicit default ordering of FIFO. So these would have to be created. You should not use EOFDLY on physical files unless you are reading sequentially by key. Any program that relies on new records being added to the end of the file will not work as expected. When we started REUSEDLT we dedicated a weekend for the access path rebuilds. We have had absolutely no problems with it for 6 years. Not even a performance degradation that anyone has noticed. Make sure with Mimx that they support re-use delete before you start it. In 1992, they did not.




So long as you have some non-user time available you should be able to REORG the files periodically. I think this reclaims deleted records.





Other tips in this category:

Click here to see all categories.

Socket Programming And Timeout Issues
Deleting Duplicate Records From A Table
What are data queues and how to use
Retrieving SMTP Name
RPGLE example for Dynamic Screen Manager API
Calling APIs from CL - with examples!
Compare two strings in RPG character by character
How to search all pgms in QCLSRC for a keyword
Retrieve Database File Description (QDBRTVFD) API
How to redirect the output to STDERR from RPG-IV
Using Multiformat Logical To Join 2 Identical File
D-Spec *LIKE DEFN
RPG: Converting Character to Decimal
Example of ILE RPG CGI Program
Handling ILE RPG Numeric Overflow
Help with Subfile Programming in RPG III
Zoned parameter in ILE RPG
What's the best way to do modulus in CL?
RPG Nesting Source Print Utility
More on changing the SIGNON screen
A silly ILE RPG question
Calling Validation List API From ILE RPG
Soft Coding Module Names
RPG Multidimensional Arrays in Action
Build a Page-Equals-Size Lookup Window
Procedures within an ILE RPG program
Break msg from RPG
Source Debugger for batch jobs
RPGLE debugging
Timing out display sessions in DDS
Building Dynamic Stored Procedures
Put Message in System Log
Dynamic RPGSQL
Randomize function for the AS/400
What's the fastest way to do a simple RPG lookup?
First time Data queue application in RPG
Print file overflow in ILE RPG
Mapping Fields To Arrays in ILE RPG
Named inidicators
STRQMQRY: comparision operator '=' isn't correct?!
DSPDTAARA to an outfile - possible?
PCL ESC codes in RPG
Sharing DB files between two AS/400s
Help: AS/400 subfiles
How do you change the signon screen?
Determining Even/Odd Values in queries
Get day of the week in RPG
Convert UPPERCASE to lowercase
RPG IV help using APIs
Help with data area API
Detecing IFS Files from RPG
SQL in a CL program
Calling AS/400 APIs from ILE RPG
CVTDAT command to convert an *MDY to a *LONGJUL
CPYSPLF Automation
Subfile Window background problem
Using IFS APIs w/ ILE RPG
Packed or unpacked fields?
QRYDFN to source and back
What does the "optimize" parm do?
Determining the calling program
Sockets in RPG?
Sorting a user space
OVRDBF and SECURE() keyword in an ILE environment
RPG record locking
RPG Differences: V2R3 to V3R2 upgrade
Getting the relative record number (RRN)
What is the longest parameter usable in RPG?
A C function that returns a string to an RPG pgm
Problems with ZADD *ZEROS
Can you highlight code in SEU?
Reusing deleted records - OK?
Is there an easy way to change edit codes?
Help - Windowed Subfiles
Logical Files and DDS
AS/400 'machine language' - MI Programming
Library lists and performance
How to use ERRSFL
Updating in CL
Record lock wait time
Message subfile problem
Physical File Joins
CL: Copying User Profiles
Commands and PARM
ILE RPG, RPG IV, vs. RPG/400
RPG and subfiles
Multiple subfiles
Field masking for passwords
SFLMODE keyword in an ILE program
Subfile size
Color coding records in a subfile
MSGLINE in windows
Controlling cursor movement on a display file
API returns error! Why?
Put an RPG Program on the Web
Variable length records in RPG
Differences Between RPG400, RPG IV, and ILE RPG


You are at a news400.com site.
Contact Us | Report Bugs | Submit Comments/Suggestions | Read Site Use Agreement | Read Privacy Policy
Copyright © 2000 Duke Communications International.
This site is best viewed with the latest versions of Netscape or Internet Explorer, 800 x 600 resolution (or higher), and at least 256 colors.
Duke Communications   NEWS/400 | 29th Street Press | Business Finance | DominoPro | Selling AS/400 Solutions | SQL Server Magazine | Windows NT Magazine