db.deadlock_rate - Deadlock Rate health indicator
Deadlock rate tracks the rate at which deadlocks are occurring in the database and the degree to which applications are experiencing contention problems.
- Identifier
- db.deadlock_rate
- Health monitor level
- Database
- Category
- Application Concurrency
- Type
- Upper-bounded threshold-based
- Unit
- Deadlocks per hour
- Lock escalations are occurring for the database
- An application may be locking tables explicitly when system-generated row locks may be sufficient
- An application may be using an inappropriate isolation level when binding
- Catalog tables are locked for repeatable read
- Applications are getting the same locks in different orders, resulting in deadlock.
(db.deadlockst - db.deadlockst-1)
where t is
the current snapshot and t-1 is the last
snapshot, taken 60 minutes before the current snapshot.The higher the rate of deadlocks, the greater the degree of contention which may generate an alert.
db.locklist_util - Lock List Utilization health indicator
This indicator tracks the amount of lock list memory that is being used.
- Identifier
- db.locklist_util
- Health monitor level
- Database
- Category
- Application Concurrency
- Type
- Upper-bounded threshold-based
- Unit
- Percentage
- Lock escalation converts row locks to table locks, thereby reducing concurrency on shared objects in the database.
- More deadlocks between applications can occur since applications are waiting for a limited number of table locks. As a result, transactions are rolled back.
An error is returned to the application when the maximum number of lock requests has reached the limit set for the database.
(db.lock_list_in_use / (locklist * 4096)) * 100
Utilization is measured as a percentage of memory consumed, where a high percentage represents an unhealthy condition.
Consider using the self-tuning memory feature to have lock memory resources automatically allocated as required by the current workload. If you have the self-tuning memory feature enabled for the lock memory area, you should configure this health indicator to disable threshold checking.
db.lock_escal_rate - Lock Escalation Rate health indicator
This indicator tracks the rate at which locks have been escalated from row locks to a table lock thereby impacting transaction concurrency.
- Identifier
- db.lock_escal_rate
- Health monitor level
- Database
- Category
- Application Concurrency
- Type
- Upper-bounded threshold-based
- Unit
- Lock escalations per hour
A lock is escalated when the total number of locks held by an application reaches the maximum amount of lock list space available to the application, or the lock list space consumed by all applications is approaching the total lock list space. The amount of lock list space available is determined by the maxlocks and locklist database configuration parameters.
When an application reaches the maximum number of locks allowed and there are no more locks to escalate, the application uses the space in the lock list allocated for other applications. There is one lock list per database and it contains the locks held by all applications concurrently connected to the database. When the entire lock list is full, an error occurs.
(db.lock_escalst - db.lock_escalst-1)
where
't' is the current snapshot and 't-1' is the last snapshot, taken
60 minutes
before the current snapshot.The higher the rate of deadlocks, the greater the degree of contention which may generate an alert.
Consider using the self-tuning memory feature to have lock memory resources automatically allocated as required by the current workload. If you have the self-tuning memory feature enabled for the lock memory area, you should configure this health indicator to disable threshold checking.
db.apps_waiting_locks - Percentage of Applications Waiting on Locks health indicator
This indicator measures the percentage of all currently executing applications that are waiting on locks.
- Identifier
- db.apps_waiting_locks
- Health monitor level
- Database
- Category
- Application Concurrency
- Type
- Upper-bounded threshold-based
- Unit
- Percentage
A high percentage can indicate that applications are experiencing concurrency problems which can negatively affect performance.
(db.locks_waiting / db.appls_cur_cons) *100)