An instrument name consists of a sequence of components separated
by '/'
characters. Example names:
wait/io/file/myisam/log wait/io/file/mysys/charset wait/synch/cond/mysys/COND_alarm wait/synch/cond/sql/BINLOG::update_cond wait/synch/mutex/mysys/BITMAP_mutex wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state wait/synch/mutex/sql/LOCK_delete wait/synch/rwlock/myisam/MYISAM_SHARE::key_root_lock wait/synch/rwlock/sql/Query_cache_query::lock
The instrument name space has a tree-like structure. The components of an instrument name from left to right provide a progression from more general to more specific. The number of components a name has depends on the type of instrument.
The interpretation of a given component in a name depends on the
components to the left of it. For example,
myisam
appears in both of the following names,
but myisam
in the first name is related to file
I/O, whereas in the second it is related to a synchronization
instrument:
wait/io/file/myisam/log wait/synch/cond/myisam/MI_SORT_INFO::cond
Instrument names consist of a prefix with a structure defined by
the Performance Schema implementation and a suffix defined by the
developer implementing the instrument code. For the prefix part of
instrument names, the top level indicates the type of instrument.
Currently this is always wait
, so the naming
tree has this structure:
wait
A wait instrument.
wait/io
An instrumented I/O operation.
wait/io/file
An instrumented file I/O operation. For files, the
wait is the time waiting for the file operation to
complete (for example, a call to
fwrite()
). Due to caching, the
physical file I/O on the disk might not happen within
this call.
wait/sync
An instrumented synchronization object. For
synchronization objects, the TIMER_WAIT
time includes the amount of time blocked while attempting
to acquire a lock on the object, if any.
wait/sync/cond
A condition is used by one thread to signal to other threads that something they were waiting for has happened. If a single thread was waiting for a condition, it can wake up and proceed with its execution. If several threads were waiting, they can all wake up and compete for the resource for which they were waiting.
wait/sync/mutex
A mutual exclusion object used to allow access to a resource (such as a section of executable code) while preventing other threads from accessing the resource.
wait/sync/rwlock
A read/write lock object used to lock a specific variable for access while preventing its use by other threads. A shared read lock can be acquired simultaneously by multiple threads. An exclusive write lock can be acquired by only one thread at a time.
The suffix part of instrument names comes from the code for the instruments themselves. For example, following the first three levels just described, the next levels are:
A name for the major component (a server module such as
myisam
, mysys
, or
sql
) or a plugin name.
The name of a variable in the code, in the form
XXX
(a global variable) or
(a member CCC
:MMM
MMM
in class
CCC
). Examples:
COND_thread_cache
,
THR_LOCK_myisam
,
BINLOG::LOCK_index
.