HW enqueue
When a
session needs access to a resource, it requests a lock on that resource in a
specific mode. Internally, lock and resource structures are used to control
access to a resource. Enqueues, as name suggests, have First In First Out
queueing mechanism.
Segments
have High Water Mark (HWM) indicating that blocks below that HWM have been
formatted. New tables or truncated tables [ that is truncated without reuse
storage clause ], have HWM value set to segment header block. Meaning, there
are zero blocks below HWM. As new rows inserted or existing rows updated
(increasing row length), more blocks are added to the free lists and HWM bumped
up to reflect these new blocks. HW enqueues are acquired in Exclusive mode
before updating HWM and essentially HW enqueues operate as a serializing
mechanism for HWM updates.
Measuring HW enqueue contention
We
will use few test cases to see how underlying extent size and table structures
are affecting HW enqueue contention. But, before we need to find a way to measure
total number of gets on HW enqueue. If total number of gets on HW enqueue is
reduced, enqueue contention can be relieved.
Fixed
table x$ksqst stores statistics about total number of enqueue gets, success and
failures of those gets at instance level. For example, to see total number of gets
on HW enqueue, following query can be used. Column ksqstreq indicates total #
of gets and ksqstwat shows total # of waits.
SQL>
select ksqstreq, ksqstwat from x$ksqst where ksqsttyp='HW';
From
Oracle version 10g and above, x$ksqst is externalized as v$enqueue_statistics.
No comments:
Post a Comment