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 aspt_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
(seearea.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_analis called immediately before the table loop. It rolls eachtblistrow up into thearlisttemp-table by storage area (records,
size, table count, max scatter, fragmentation), which theareaReport
procedure then renders intoarea.rpt.- After the report is closed,
tblReportcallslib/uploader.p ( <path>, pt_shortname, output xStatus )to ship the file
off as part of the ProTop run. - If
hpljis 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 RPB, Avg 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-referencearea.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.