29.12.13.4 表:table_handles
性能_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_LOCKSQL级别的表锁定。该值是
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 表不允许执行。