An instrument name consists of a sequence of components separated
'/' 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/LOCK_delete wait/synch/rwlock/innodb/trx_sys_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,
myisam in the first name is related to file
I/O, whereas in the second it is related to a synchronization
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. The top-level
component of an instrument prefix indicates the type of
instrument. This component also determines which event timer in
setup_timers table applies to the
instrument. For the prefix part of instrument names, the top level
indicates the type of instrument.
The suffix part of instrument names comes from the code for the instruments themselves. Suffixes may include levels such as these:
A name for the major component (a server module such as
sql) or a plugin name.
The name of a variable in the code, in the form
XXX(a global variable) or
In MySQL 5.5, there is a single top-level component,
wait, indicating a wait instrument. The naming
tree for wait instruments has this structure:
An instrumented I/O operation.
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.
An instrumented synchronization object. For synchronization objects, the
TIMER_WAITtime includes the amount of time blocked while attempting to acquire a lock on the object, if any.
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.
A mutual exclusion object used to permit access to a resource (such as a section of executable code) while preventing other threads from accessing the resource.
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.