table_handles表
性能架构通过table_handles
表公开表锁信息,以显示当前对每个打开的表句柄有效的表锁。table_handles
报告表锁检测记录的内容。此信息显示服务器打开了哪个表句柄,如何锁定它们以及通过哪个会话。
该table_handles
表是只读的,无法更新。默认情况下会自动调整大小。要配置表大小,请performance_schema_max_table_handles
在服务器启动时设置系统变量。
表锁工具使用该wait/lock/table/sql/handler
工具,该工具默认情况下处于启用状态。
要在服务器启动时控制表锁定检测状态,请在my.cnf
文件中使用以下行:
启用:
[mysqld] performance-schema-instrument='wait/lock/table/sql/handler=ON'
禁用:
[mysqld] performance-schema-instrument='wait/lock/table/sql/handler=OFF'
要在运行时控制表锁定检测状态,请更新setup_instruments
表:
启用:
UPDATE performance_schema.setup_instrumentsSET ENABLED = 'YES', TIMED = 'YES'WHERE NAME = 'wait/lock/table/sql/handler';禁用:
UPDATE performance_schema.setup_instrumentsSET ENABLED = 'NO', TIMED = 'NO'WHERE NAME = 'wait/lock/table/sql/handler';
该table_handles
表包含以下列:
OBJECT_TYPE
该表由表句柄打开。
OBJECT_SCHEMA
包含对象的架构。
OBJECT_NAME
被检测对象的名称。
OBJECT_INSTANCE_BEGIN
表句柄地址在内存中。
OWNER_THREAD_ID
拥有表句柄的线程。
OWNER_EVENT_ID
导致表句柄打开的事件。
INTERNAL_LOCK
在SQL级别使用的表锁。值中的一个
READ
,READ WITH SHARED LOCKS
,READ HIGH PRIORITY
,READ NO INSERT
,WRITE ALLOW WRITE
,WRITE CONCURRENT INSERT
,WRITE LOW PRIORITY
,或WRITE
。有关这些锁类型的信息,请参见include/thr_lock.h
源文件。EXTERNAL_LOCK
在存储引擎级别使用的表锁。值为
READ EXTERNAL
或之一WRITE EXTERNAL
。
该table_handles
表具有以下索引:
- (
OBJECT_INSTANCE_BEGIN
)上的主键 - 在指数(
OBJECT_TYPE
,OBJECT_SCHEMA
,OBJECT_NAME
) - 在(
OWNER_THREAD_ID
,OWNER_EVENT_ID
)上的索引
TRUNCATE TABLE
不允许用于该table_handles
表。