Performance Schema 通过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_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME = 'wait/lock/table/sql/handler';禁用:
UPDATE performance_schema.setup_instruments SET 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。
TRUNCATE TABLE不允许用于table_handles表。