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. |