Kbase 13005: Workfiles and exceeding -l Local Buffer Size: An alternative
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/10/1998 |
|
Workfiles and exceeding -l Local Buffer Size: An alternative
What alternatives are there to workfiles, especially when
the number of workfile records exceeds the -l Local Buffer
Size? If you are getting errors 4, 5, or 1399, you are
seeing this problem.
Workfile records, variables, and data records are held in
memory which is allocated for each client user with the
-l Local Buffer Size startup option. On some platforms,
this is limited to 63KB and cannot be increased.
One means to avoid this problem when there is not enough
buffer space for as many workfile records as you need is
to use a "throw away" database.
Step one is to determine what the records look like for the
report or process you need: translate your DEFINE WORKFILE
statement into the schema for a database (freestanding -- not
a new table in your existing production database).
Keep a database with the appropriate schema loaded to it in a
shared directory.
To make the "scratch database" even more flexible, you might
consider defining a generic record with one integer field,
one character field and a selection of fields usable for a
variety of reports, say, one additional character field and
a decimal field of 13 extents (for monthly financials).
Define a non-unique index on the integer field, and another one
on the first character field. That way this schema could be used
for a variety of reports.
Parent proc:
- UNIX SILENT prodb tempdb $APPL/workdb
- CONNECT tempdb -1 -i.
- RUN childproc/report.p.
- DISCONNECT "tempdb".
- UNIX SILENT rm tempdb*.
That way you don't build up the size of the production database
and can have this database in the same directory as user temp
files (-T). You also don't eat the time it takes
for transaction-level DELETEs -- you just blast the tempdb away.
Progress Software Technical Support Note # 13005