Skip to content
English
  • There are no suggestions because the search field is empty.

Report: Table Summary

The *.tbl.rpt files under rpt/ are per-table summary reports for a connected OpenEdge database.

They are kicked off by util/dbanalys.p and
written by the tblReport procedure inside ssg/sausage20.i (which is the
sausage-machine include that subscribes to the dba_report event).

util/dbanalys.p itself is a thin driver: it loads the ProTop config and VST
helper libraries, opens a log file, and then calls publish "dba_report".
The work happens in subscribers — tblReport produces this file, while sister
procedures in the same include produce companion reports such as area.rpt.

One file is written per database, named <shortname>.tbl.rpt and placed in
$RPTDIR. Output is fixed-width text wide enough to hold the column block
below.

Invocation

mpro <dbname> -p util/dbanalys.p -param "<friendlyName>"

The -param value is split on | and the first entry is used as
pt_shortname, which becomes the prefix of the report filename and the
“friendly” database label printed in the report.

Layout

A single header block, then one row per user table:

Table Summary Report for <pt_shortName> <pdbname(1)>
Suggested
Table Name Size Records Reads/sec Upd/sec Avg Rec RPB Ord
======================================= ============= =========== ============ ========== ======= === ===

Rows are sorted by tblist.order ascending, then by table size descending,
then by reads descending
. The order value is keyed off the table’s
ideal RPB, so the report groups tables by RPB tier: tables with short
records (high RPB — many rows per block) appear at the top, tables with
long records (low RPB — few rows per block) appear further down.
Tables whose names begin with _ (Progress metaschema tables) are
excluded.

Columns

  • Table Name — tblist.tbl, the user table name, 40 chars wide.
  • Size — tblist.tsz, total data size of the table in bytes (as collected
    via VST sampling earlier in the sausage pipeline).
  • Records — tblist.recs, current record count.
  • Reads/sec — tblist.trd, the per-second read rate observed during
    sampling. Zero on a quiet database, useful for finding hot tables.
  • Upd/sec — tblist.tupd, the per-second update rate observed during
    sampling (sourced from _TableStat-update, which is updates only —
    creates and deletes have their own VST counters and are not included).
  • Avg Rec — computed as tblist.tsz / tblist.recs, the average record
    size in bytes. Shown as ? when the table has zero records.
  • RPB (Suggested) — idealRPB( bsize, avgRecSize ), the records-per-block
    ProTop recommends given the storage area’s block size and the table’s
    current average record size. Compare this against the area’s actual RPB
    (see area.rpt) — when the suggested value is much higher than the
    configured RPB the table is wasting space; when it’s much lower the area is
    over-allocating slot pointers.
  • Ord — tblist.order, the sort-order key used to bucket tables in the
    report. It is RPB-shaped (1, 32, 64, 128, …, 999) and lets you eyeball
    tables that fall into the same RPB tier.
  • [Area] — the storage area the table lives in, in brackets, e.g.
    [Cust_Data][Order][CDC_Track_Data].

Side effects

  • sa_anal is called immediately before the table loop. It rolls each
    tblist row up into the arlist temp-table by storage area (records,
    size, table count, max scatter, fragmentation), which the areaReport
    procedure then renders into area.rpt.
  • After the report is closed, tblReport calls
    lib/uploader.p ( <path>, pt_shortname, output xStatus ) to ship the file
    off as part of the ProTop run.
  • If hplj is true an HP LaserJet PCL initialization escape sequence is
    emitted as the first line so the file prints cleanly in compressed mode on
    legacy printers.

Reading the report

tbl.rpt is one of the most useful tools when beginning to plan a
dump-and-load: the Suggested RPBAvg Rec, and [Area]
columns together give a clean picture of which tables are mis-tiered
and how the storage areas should be reshaped on the way back in.

Things to look for:

  • Hot tables — sort visually by Reads/sec / Upd/sec to find
    candidates for index review or area placement changes.
  • RPB mismatches — when Suggested RPB disagrees with the area’s
    configured RPB (cross-reference area.rpt), consider a dump-and-load into
    a more appropriately sized area.
  • Avg Rec drift — large tables whose Avg Rec is creeping up over
    time may have drifted away from the area’s RPB; the fix is a
    dump-and-load into an appropriately tiered area, possibly preceded by
    a schema review.
  • Co-tenancy — the [Area] column lets you spot tables that share an
    area; mixing very different RPB tiers in one area is a common source of
    wasted space and fragmentation.