Database performance tuning tools

To aid in performance evaluation, the Stats Tools diagnostics plugin records statistics for system activities that affect performance. System activities include execution of queries, scripts, and transactions.

Note: The Stats Tools plugin is activated by default. It requires the admin role to activate or upgrade, and it requires the com.glide.monitor.round_robin_database.

Stats Tools adds modules under System Diagnostics > Stats, including Slow Queries, Slow Scripts, and Slow Transactions. Each module accesses a table of activity patterns [sys_query_pattern], [sys_script_pattern], [sys_transaction_pattern]. Each pattern table represents a collection of unique activities. Each collection is an aggregation of executions of that unique activity over all time. Each record provides basic timing analysis with example identifiable details of the activity.

Activity patterns are immediately recorded to a cache and are later persisted to their pattern table. If you flush server caches, then recorded activities that have not been persisted are cleared.

Following are examples of pattern records.

  • Each time a query is executed that meets the recording and persistence threshold it is aggregated and stored as a query pattern record.
  • Each time a particular business rule is executed it aggregates to a script pattern record.
  • Each time a particular background job runs it aggregates into a unique transaction pattern record.
  • Each click of the New button on the Incidents list counts as a list type transaction pattern with specific form action.

Metrics

Metrics include total and average times of interest per unique execution pattern over the total execution count. Metrics are aggregated with each new instance of the unique activity and persisted to the pattern record.

Metadata

Example data from specific executions are included on each pattern to identify execution details.

Characterizations of each activity type

Transactions

Any transaction type includes server-side and related client-side transactions.

Metrics include Total server load time, which aggregates the total server-side time excluding semaphore and session wait times. It also aggregates relevant server transaction times that are found on the syslog_transaction table.

Transaction types:

  • An HTTP Request transaction is identified by a URL, transaction type, processor, form/list action, URL query (filters), and related table name.
  • Any other transaction is identified by its transaction URL/page/name, transaction type, and processor or thread name.
Scripts

Any script activity type includes scripts evaluated by GlideScopedEvaluator.

Script Types:

  • A Jelly Script is identified by the sys_jelly_file table, jelly file path, line number, and script that was executed.
  • Any other script is identified by the table and sys_id.
Queries

Any query activity includes prepared statements executed by GlideDBI

Query Types:

  • All queries are identified by MongoDB query or insert, update, or select statements, as well as other components of the statement like selected columns, where clause, unions, column sets, and limits.