Instance tables document what types of objects are instrumented. They provide event names and explanatory notes or status information.
This group contains tables with names that match the pattern
'%INSTANCES' (plural). It does not include
tables with '_BY_INSTANCE' in their name;
those are summary tables, not instance tables.
mysql>SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES->WHERE TABLE_SCHEMA = 'performance_schema'->AND TABLE_NAME LIKE '%INSTANCES';+------------------+ | TABLE_NAME | +------------------+ | COND_INSTANCES | | FILE_INSTANCES | | MUTEX_INSTANCES | | RWLOCK_INSTANCES | +------------------+
These tables list instrumented synchronization objects and
files. Each table has an EVENT_NAME or
NAME column to indicate the instrument
associated with each row. Instrument names have multiple parts
and form a hierarchy, as discussed in
Section 5, “Performance Schema Event Instrument Naming Conventions”.
There are three types of synchronization objects:
cond, mutex, and
rwlock. These objects are described in
Section 5, “Performance Schema Event Instrument Naming Conventions”.
The COND_INSTANCES table has these columns:
NAME
The instrument name associated with the condition.
OBJECT_INSTANCE_BEGIN
The address in memory of the condition that was instrumented.
The FILE_INSTANCES table lists all the files
seen by the Performance Schema when executing file I/O
instrumentation. If a file on disk has never been opened, it
will not be in FILE_INSTANCES. When a file is
deleted from the disk, it is also removed from the
FILE_INSTANCES table.
The FILE_INSTANCES table has these columns:
FILE_NAME
The file name.
EVENT_NAME
The instrument name associated with the file.
OPEN_COUNT
The count of open handles on the file. If a file was opened
and then closed, it was opened 1 time, but
OPEN_COUNT will be 0. To list all the
files currently opened by the server, use WHERE
OPEN_COUNT > 0.
The MUTEX_INSTANCES table has these columns:
NAME
The instrument name associated with the mutex.
OBJECT_INSTANCE_BEGIN
The address in memory of the mutex that was instrumented.
LOCKED_BY_THREAD_ID
When a thread currently has a mutex locked,
LOCKED_BY_THREAD_ID is the
THREAD_ID of the locking thread,
otherwise it is NULL.
The RWLOCK_INSTANCES table has these columns:
NAME
The instrument name associated with the lock.
OBJECT_INSTANCE_BEGIN
The address in memory of the lock that was instrumented.
WRITE_LOCKED_BY_THREAD_ID
When a thread currently has an rwlock
locked in exclusive (write) mode,
WRITE_LOCKED_BY_THREAD_ID is the
THREAD_ID of the locking thread,
otherwise it is NULL.
READ_LOCKED_BY_COUNT
When a thread currently has an rwlock
locked in shared (read) mode,
READ_LOCKED_BY_COUNT is incremented by 1.
This is a counter only, so it cannot be used directly to
find which thread holds a read lock, but it can be used to
see whether there is a read contention on an
rwlock, and see how many readers are
currently active.
The MUTEX_INSTANCES.LOCKED_BY_THREAD_ID and
RWLOCK_INSTANCES.WRITE_LOCKED_BY_THREAD_ID
columns are extremely important for investigating performance
bottlenecks or deadlocks. For examples of how to use them for
this purpose, see Section 11, “Using Performance Schema to Diagnose Problems”
