What Are Timed Statistics?

The timed statistics feature gives you information on the amount of processing time used for each function performed on a specific table for each user and program combination. This information is useful when you want to understand performance tuning issues.

You can choose the timed statistics feature to monitor statistics for specific user, specific program, or specific combinations of user and program. You can also set this feature to monitor all users and programs, but if there are many users accessing the database, timed statistics might produce a large amount of output.

Each time the statistics are generated, the output goes to a directory specified by the DIR parameter of the database server configuration file (ladb.cfg) or set by the dbadmin utility. You can print or view the output files using a text editor. The output file has the name:

\tmp\ programname.dataarea .stats. pid.yyyyyy

where yyyyyy uniquely identifies the statistics session.

The summary section lists a count of the total number of times a function was called, as well as the total amount of time in milliseconds (thousandths of a second) used by the calls to the function. A breakdown by table follows the summary. This breakdown shows the number of calls and amount of time for each function that accesses a specific table. It also shows a listing of calls to any indexes on the table.

The summary information is useful for identifying user actions. For example, if two users are running the same program and one user complains about slow performance while the other does not, the information provided in the summary section shows which actions are being performed most frequently by each user. Checking the timed statistics for each user might show that the user who is experiencing slow performance is doing a large number of page forwards and page backwards on the form, as indicated by a high count for the FindNxt and FindPrv functions.

The table breakdowns are useful for determining which tables are being accessed most frequently by different users and programs. They are also useful for determining whether or not queries are efficiently using indexes. If a large number of calls are being made to a table without using any available indexes, you might find that the indexes or queries are not constructed very well. The report lists only the number of calls made to an index; it does not list how many of those calls successfully used the index. If you accidentally drop an index, the timed statistics output does not reflect it.

The meanings of the tracked calls are summarized in the table below.

Type of call Meaning
nonInterface Time in application, that is, time not in the database APIs.
BeginTrans Begin a transaction state.
EndTrans End transaction state and commit any inserts, updates, and deletes.
Inserts Create a new row.
Stores Rewrite or write a new row. A rewrite must follow a MODIFY call. Similarly, a write must follow a CREATE or RECREATE call.
Deletes Delete a single row.
FullDelete Delete a single row, following the defined rules.
FullDeleteRng Delete a range of rows, following the defined rules.
ReadDBData Retrieve data from a table.
Mods Retrieve a single row and ready it for updating or deletion.
Updates Rewrite an existing row with the values in the columns.
Inserts Insert a single row with the values in the columns.
Counts Retrieve a count of rows in the table.
Open Table Open the table for data access.
Close Table Close the table for data access.
Find Retrieve a single row.
FindNlt Retrieve the first row equal to or greater than the specified key(s).
FindNxt Retrieve the row following the current row for the specified index. Performed after a successful FindNlt call.
FindPrv Retrieve the row before the current row specified by the key(s) via a specified index.
FindBegRng Retrieve the first row in a range specified by the key(s).
FindSubRng Retrieve the first row in a range specified by the key(s) and having an end value specified on its last key.
DelRng Delete a range of rows.
DelSubRng Delete a range of rows that has an end value specified for its last key.
FilterDelRng Delete a range of rows, using a filter.
FilterDelSubRng Delete a range of rows that has an end value specified for its last key, using a filter.
FindNextRng Retrieve the next row in a range. Must be preceded by a FindBegRng.
FindPrevRng Retrieve the previous row in a range.
AggSubRng Retrieve aggregate results.
Total Calls on Index 00 The number of API calls for a specified index.