The VMS SharkOpenVMS Notes: RMS File Tuning

  1. The information and software presented on this web site are intended for educational use only by OpenVMS application developers and OpenVMS system attendants.
  2. The information and software presented on this web site are provided free of charge.
  3. The information and software presented on this web site are presented to you as-is. I will not be held responsible in any way if the information and software presented on this web site damages your computer system, business or organization (sounds like the legal warning from a Microsoft shrink-wrap seal, eh?)
  4. The information presented on this page can be really dangerous if you don't know what you are doing. So develop your skills by practicing on files first copied to scratch drives. On top of this, always make sure you have good backup copies of everything before you begin.
  5. Is this text too small? You have two options:
    1. hold down the CTRL key while rolling the mouse wheel (zoom-in, zoom-out)
    2. use your keyboard like so:
      • hit: CTRL with "-" key to zoom smaller
      • hit: CTRL with "+" key to zoom larger
      • hit: CTRL with zero key to reset zoom

Quick Index


RMS for OpenVMS

RMS Links

RMS File Tuning

Legend for the following examples:
    <ur>	= user response
    <sr>	= system response
    <enter>	= hit the enter key
Example #1 (Vanilla Convert)
<ur> $dir troubledb2200.dat/nohead/notrail/size=all/width=(file=40)	! see the file sizes before we start
<sr> CSMIS$ROOT4:[DAT]TroubleDB2200.dat;120 250908/250911		! 250908 blocks used; 250911 blocks allocated
     $
<ur> convert/create troubledb2200.dat *.*				! convert troubledb2200.dat into a newer version
<sr> $
<ur> dir troubledb2200.dat/nohead/notrail/size=all/width=(file=40)	! see the file sizes after we're done
<sr> CSMIS$ROOT4:[DAT]TroubleDB2200.dat;121 250920/250920		! slightly more blocks used / allocated
     CSMIS$ROOT4:[DAT]TroubleDB2200.dat;120 250908/250911		!
     $
Example #2 (Feedback Convert: Interactive real-world example)
<ur> $ana/rms/fdl TroubleDB2200.dat					! create an FDL for this file
<sr> $									!
<ur> sh sym edit							! Is EDIT redefined by a DCL symbol?
<sr>   ED*IT == "EDIT/EDT"						! Yes. Notice "two equals" so we need to delete a global symbol
     $
<ur> del/sym/glo edit							! delete global DCL symbol for current process
<sr> $									! 
<ur> edit/fdl TroubleDB2200						! invoke the FDL editor (notice that I did not enter an extension)

========== Start Of Recorded Procedure ==========

Parsing Definition File
Definition Parse Complete

OpenVMS FDL Editor (menu)

Add     to insert one line into the FDL definition
Delete  to remove one line from the FDL definition
Exit    to leave the FDL Editor after creating the FDL file
Help    to obtain information about the FDL Editor
Invoke  to initiate a script of related questions
Modify  to change an existing line in the FDL definition
Quit    to abort the FDL Editor with no FDL file creation
Set     to specify FDL Editor characteristics
View    to display the current FDL Definition

Main Editor Function            (Keyword)[Help] : i <enter>

Script Title Selection (menu)

Add_Key         modeling and addition of a new index's parameters
Delete_Key      removal of the highest index's parameters
Indexed         modeling of parameters for an entire Indexed file
Optimize        tuning of all indices' parameters using file statistics
Relative        selection of parameters for a Relative file
Sequential      selection of parameters for a Sequential file
Touchup         remodeling of parameters for a particular index

Editing Script Title            (Keyword)[-]    : o <enter>

An Input Analysis File is necessary for Optimizing Keys.

Analysis File file-spec (1-512 chars)[null]
: troubledb2200 <enter>		(notice that I did not enter a file extension)

Parsing Analysis File
Analysis Parse Complete

The Definition of Key  0 will be replaced.

Press RETURN to continue (^Z for Main Menu) <enter>

Key  0 Graph Type Selection

Line    Bucket Size vs Index Depth      as a 2 dimensional plot
Fill    Bucket Size vs     Load Fill Percent     vs Index Depth
Key     Bucket Size vs         Key Length        vs Index Depth
Record  Bucket Size vs        Record Size        vs Index Depth
Init    Bucket Size vs Initial Load Record Count vs Index Depth
Add     Bucket Size vs  Additional Record Count  vs Index Depth

Graph type to display           (Keyword)[Line] : <enter>

Number of Records that will be Reloaded
into the File                 (0-2Giga)[203843] : <enter> (sometimes enter 90% of this to recover allocated space)

(Fast_Convert NoFast_Convert RMS_Puts)
File Reloading Method           (Keyword)[Fast] : <enter>

Number of Additional Records to be Added After
the Reloading the File        (0-2147279802)[0] : <enter> (input the number of records you will add before next convert)

Key  0 Segmentation desired     (Yes/No)[No]    : yes <enter> Note: you should always answer yes

Key  0 Length           SEG1    (1-255)[-]      : 0 <enter> (asking about SEG1 because SEG0 was skipped)

      *|
      9|
      8|
Index 7|
      6|
Depth 5|
      4|
      3|      3 3 3
      2|            2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
      1|
       +- + - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - +
          1       5        10        15        20        25        30  32
       Bucket Size (number of blocks)

PV-Prolog Version       3 KT-Key  0 Type     String  EM-Emphasis  Flatter ( 9)
DK-Dup Key  0 Values  Yes KL-Key  0 Length        9 KP-Key  0 Position      0
RC-Data Record Comp   60% KC-Data Key Comp      27% IC-Index Record Comp  25%
BF-Bucket Fill       100% RF-Record Format Variable RS-Mean Record Size  1200
LM-Load Method  Fast_Conv IL-Initial Load    203843 AR-Added Records        0
Which File Parameter    (Mnemonic)[refresh]     : fd <enter>

Text for FDL Title Section      (1-126 chars)[null]
:<enter>

Emphasis Used In Defining Default:      (     Flatter_files     )
Suggested Bucket Sizes:                 (       3      9     18 )
Number of Levels in Index:              (       3      2      2 )
Number of Buckets in Index:             (     593     66     18 )
Pages Required to Cache Index:          (    1779    594    324 )
Processing Used to Search Index:        (     288    588   1178 )

Key  0 Bucket Size              (3-63)[9]       :<enter>

The Depth of Key  0 is Estimated to be No Greater
than 2 Index levels, which is 3 Total levels.

Press RETURN to continue (^Z for Main Menu) <enter>

The Definition of Key  1 will be replaced.

Press RETURN to continue (^Z for Main Menu) <enter>

Key  1 Graph Type Selection

Line    Bucket Size vs Index Depth      as a 2 dimensional plot
Fill    Bucket Size vs     Load Fill Percent     vs Index Depth
Key     Bucket Size vs         Key Length        vs Index Depth

Graph type to display           (Keyword)[Line] : <enter>

Key  1 Segmentation desired     (Yes/No)[No]    : yes <enter> Note: you should always answer yes

Key  1 Length           SEG2    (1-255)[-]      : 0  <enter> (asks about SEG2 because SEG0 and SEG1 were skipped)

      *|
      9|
      8|
Index 7|
      6|
Depth 5|
      4|
      3|
      2|      2 2 2 2 2 2 2 2 2 2 2
      1|                            1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
       +- + - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - +
          1       5        10        15        20        25        30  32
       Bucket Size (number of blocks)

PV-Prolog Version       3 KT-Key  1 Type     String  EM-Emphasis  Flatter (18)
DK-Dup Key  1 Values  Yes KL-Key  1 Length        8 KP-Key  1 Position     95
RC-Data Record Comp    0% KC-Data Key Comp      60% IC-Index Record Comp  20%
BF-Bucket Fill       100% RF-Record Format Variable RS-Mean Record Size  1200
LM-Load Method  Fast_Conv IL-Initial Load    203812 AR-Added Records        0
Which File Parameter    (Mnemonic)[refresh]     : fd <enter>

Emphasis Used In Defining Default:      (     Flatter_files     )
Suggested Bucket Sizes:                 (       3     18     27 )
Number of Levels in Index:              (       2      1      1 )
Number of Buckets in Index:             (      21      1      1 )
Pages Required to Cache Index:          (      63     18     27 )
Processing Used to Search Index:        (     192    589    885 )

Key  1 Bucket Size              (1-63)[18]      : <enter>

The Depth of Key  1 is Estimated to be No Greater
than 1 Index levels, which is 2 Total levels.

Press RETURN to continue (^Z for Main Menu) <enter>

The Definition of Key  2 will be replaced.

Press RETURN to continue (^Z for Main Menu) <enter>

Key  2 Graph Type Selection

Line    Bucket Size vs Index Depth      as a 2 dimensional plot
Fill    Bucket Size vs     Load Fill Percent     vs Index Depth
Key     Bucket Size vs         Key Length        vs Index Depth

Graph type to display           (Keyword)[Line] : <enter>

Key  2 Segmentation desired     (Yes/No)[No]    : yes <enter> Note: you should always answer yes

Key  2 Length           SEG2    (1-255)[-]      : 0 <enter> (asks about SEG2 because SEG0 and SEG1 were skipped)

      *|
      9|
      8|
Index 7|
      6|
Depth 5|
      4|
      3|
      2|      2 2 2 2 2 2 2 2 2 2 2
      1|                            1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
       +- + - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - +
          1       5        10        15        20        25        30  32
       Bucket Size (number of blocks)

PV-Prolog Version       3 KT-Key  2 Type     String  EM-Emphasis  Flatter (18)
DK-Dup Key  2 Values  Yes KL-Key  2 Length        8 KP-Key  2 Position     99
RC-Data Record Comp    0% KC-Data Key Comp      60% IC-Index Record Comp  20%
BF-Bucket Fill       100% RF-Record Format Variable RS-Mean Record Size  1200
LM-Load Method  Fast_Conv IL-Initial Load    203814 AR-Added Records        0
Which File Parameter    (Mnemonic)[refresh]     : fd <enter>

Emphasis Used In Defining Default:      (     Flatter_files     )
Suggested Bucket Sizes:                 (       3     18     27 )
Number of Levels in Index:              (       2      1      1 )
Number of Buckets in Index:             (      21      1      1 )
Pages Required to Cache Index:          (      63     18     27 )
Processing Used to Search Index:        (     192    589    885 )

Key  2 Bucket Size              (1-63)[18]      : <enter>

The Depth of Key  2 is Estimated to be No Greater
than 1 Index levels, which is 2 Total levels.

Press RETURN to continue (^Z for Main Menu) <enter>

The Definition of Key  3 will be replaced.

Press RETURN to continue (^Z for Main Menu)

Key  3 Graph Type Selection

Line    Bucket Size vs Index Depth      as a 2 dimensional plot
Fill    Bucket Size vs     Load Fill Percent     vs Index Depth
Key     Bucket Size vs         Key Length        vs Index Depth

Graph type to display           (Keyword)[Line] : <enter>

Key  3 Segmentation desired     (Yes/No)[No]    : yes <enter> Note: you should always answer yes

Key  3 Length           SEG1    (1-255)[-]      : 0 <enter> (asks about SEG1 because SEG0 was skipped)

      *|
      9|
      8|
Index 7|
      6|
Depth 5|
      4|
      3|
      2|     2 2 2 2 2 2 2 2 2 2
      1|                         1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
      +- + - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - +
         1       5        10        15        20        25        30  32
      Bucket Size (number of blocks)

PV-Prolog Version       3 KT-Key  3 Type     String  EM-Emphasis  Flatter (18)
DK-Dup Key  3 Values  Yes KL-Key  3 Length       15 KP-Key  3 Position    304
RC-Data Record Comp    0% KC-Data Key Comp      58% IC-Index Record Comp  31%
BF-Bucket Fill       100% RF-Record Format Variable RS-Mean Record Size  1200
LM-Load Method  Fast_Conv IL-Initial Load    110857 AR-Added Records        0
Which File Parameter    (Mnemonic)[refresh]     : fd <enter>

Emphasis Used In Defining Default:      (     Flatter_files     )
Suggested Bucket Sizes:                 (       3     18     27 )
Number of Levels in Index:              (       2      1      1 )
Number of Buckets in Index:             (      19      1      1 )
Pages Required to Cache Index:          (      57     18     27 )
Processing Used to Search Index:        (     148    450    676 )

Key  3 Bucket Size              (1-63)[18]      : <enter>

The Depth of Key  3 is Estimated to be No Greater
than 1 Index levels, which is 2 Total levels.

Press RETURN to continue (^Z for Main Menu) <enter>

The Definition of Key  4 will be replaced.

Press RETURN to continue (^Z for Main Menu) <enter>

Key  4 Graph Type Selection

Line    Bucket Size vs Index Depth      as a 2 dimensional plot
Fill    Bucket Size vs     Load Fill Percent     vs Index Depth
Key     Bucket Size vs         Key Length        vs Index Depth

Graph type to display           (Keyword)[Line] : <enter>

Key  4 Segmentation desired     (Yes/No)[No]    : yes <enter> Note: you should always answer yes

Key  4 Length           SEG1    (1-255)[-]      : 0 <enter> (asks about SEG1 because SEG0 was skipped)

      *|
      9|
      8|
Index 7|
      6|
Depth 5|
      4|
      3|
      2|
      1|      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
       +- + - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - +
          1       5        10        15        20        25        30  32
       Bucket Size (number of blocks)

PV-Prolog Version       3 KT-Key  4 Type     String  EM-Emphasis  Flatter ( 3)
DK-Dup Key  4 Values  Yes KL-Key  4 Length        8 KP-Key  4 Position    265
RC-Data Record Comp    0% KC-Data Key Comp      43% IC-Index Record Comp  37%
BF-Bucket Fill       100% RF-Record Format Variable RS-Mean Record Size  1200
LM-Load Method  Fast_Conv IL-Initial Load      1307 AR-Added Records        0
Which File Parameter    (Mnemonic)[refresh]     : fd <enter>

Emphasis Used In Defining Default:      (     Flatter_files     )
Suggested Bucket Sizes:                 (       3      3     18 )
Number of Levels in Index:              (       1      1      1 )
Number of Buckets in Index:             (       1      1      1 )
Pages Required to Cache Index:          (       3      3     18 )
Processing Used to Search Index:        (     115    115    696 )

Key  4 Bucket Size              (1-63)[3]       : <enter>

The Depth of Key  4 is Estimated to be No Greater
than 1 Index levels, which is 2 Total levels.

Press RETURN to continue (^Z for Main Menu) <enter>
OpenVMS FDL Editor (menu)

Add     to insert one line into the FDL definition
Delete  to remove one line from the FDL definition
Exit    to leave the FDL Editor after creating the FDL file
Help    to obtain information about the FDL Editor
Invoke  to initiate a script of related questions
Modify  to change an existing line in the FDL definition
Quit    to abort the FDL Editor with no FDL file creation
Set     to specify FDL Editor characteristics
View    to display the current FDL Definition

Main Editor Function            (Keyword)[Help] : exit <enter>

========== End of Recorded Procedure ==========


Now use the tweaked FDL to tune the indexed file:
<sr> CSMIS$ROOT4:[DAT]TroubleDB2200.FDL;2  123 lines
     $
<ur> convert/create/fdl=TroubleDB2200 TroubleDB2200.dat *.*
<sr> $
<ur> dir troubledb2200.dat/nohead/notrail/size=all/width=(file=40)
<sr> CSMIS$ROOT4:[DAT]TroubleDB2200.dat;122 273690/273690		! more blocks used / allocated due to greater key depths (but will be much faster)
     CSMIS$ROOT4:[DAT]TroubleDB2200.dat;121 250920/250920 
     CSMIS$ROOT4:[DAT]TroubleDB2200.dat;120 250908/250911
     $

RMS File Tuning Links


Back to OpenVMS
Back to Home
Neil Rieck
Kitchener - Waterloo - Cambridge, Ontario, Canada.