The Performance Schema exposes table lock information through
the table_handles
table to show
the table locks currently in effect for each opened table
handle. table_handles
reports
what is recorded by the table lock instrumentation. This
information shows which table handles the server has open, how
they are locked, and by which sessions.
The table_handles
table is read
only and cannot be updated. It is autosized by default; to
configure the table size, set the
performance_schema_max_table_handles
system variable at server startup.
Table lock instrumentation uses the
wait/lock/table/sql/handler
instrument,
which is enabled by default.
To control table lock instrumentation state at server startup,
use lines like these in your my.cnf
file:
Enable:
[mysqld] performance-schema-instrument='wait/lock/table/sql/handler=ON'
Disable:
[mysqld] performance-schema-instrument='wait/lock/table/sql/handler=OFF'
To control table lock instrumentation state at runtime, update
the setup_instruments
table:
Enable:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME = 'wait/lock/table/sql/handler';
Disable:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME = 'wait/lock/table/sql/handler';
The table_handles
table has these
columns:
OBJECT_TYPE
The table opened by a table handle.
OBJECT_SCHEMA
The schema that contains the object.
OBJECT_NAME
The name of the instrumented object.
OBJECT_INSTANCE_BEGIN
The table handle address in memory.
OWNER_THREAD_ID
The thread owning the table handle.
OWNER_EVENT_ID
The event which caused the table handle to be opened.
INTERNAL_LOCK
The table lock used at the SQL level. The value is one of
READ
,READ WITH SHARED LOCKS
,READ HIGH PRIORITY
,READ NO INSERT
,WRITE ALLOW WRITE
,WRITE CONCURRENT INSERT
,WRITE LOW PRIORITY
, orWRITE
. For information about these lock types, see theinclude/thr_lock.h
source file.EXTERNAL_LOCK
The table lock used at the storage engine level. The value is one of
READ EXTERNAL
orWRITE EXTERNAL
.
The table_handles
table has these
indexes:
Primary key on (
OBJECT_INSTANCE_BEGIN
)Index on (
OBJECT_TYPE
,OBJECT_SCHEMA
,OBJECT_NAME
)Index on (
OWNER_THREAD_ID
,OWNER_EVENT_ID
)
TRUNCATE TABLE
is not permitted
for the table_handles
table.