工具名称由一系列元素组成,这些元素由 '/'
字符分隔。示例名称
wait/io/file/myisam/log
wait/io/file/mysys/charset
wait/lock/table/sql/handler
wait/synch/cond/mysys/COND_alarm
wait/synch/cond/sql/BINLOG::update_cond
wait/synch/mutex/mysys/BITMAP_mutex
wait/synch/mutex/sql/LOCK_delete
wait/synch/rwlock/sql/Query_cache_query::lock
stage/sql/closing tables
stage/sql/Sorting result
statement/com/Execute
statement/com/Query
statement/sql/create_table
statement/sql/lock_tables
errors
工具命名空间具有树状结构。工具名称中的元素从左到右表示从更一般到更具体的进展。名称具有的元素数量取决于工具的类型。
名称中给定元素的解释取决于其左侧的元素。例如,myisam
出现在以下两个名称中,但第一个名称中的 myisam
与文件 I/O 相关,而第二个名称中的 myisam
与同步工具相关
wait/io/file/myisam/log
wait/synch/cond/myisam/MI_SORT_INFO::cond
工具名称由性能模式实现定义结构的前缀和实现工具代码的开发人员定义的后缀组成。工具前缀的顶级元素指示工具的类型。此元素还确定 performance_timers
表中的哪个事件计时器适用于该工具。对于工具名称的前缀部分,顶层指示工具的类型。
工具名称的后缀部分来自工具本身的代码。后缀可以包含以下级别:
主要元素的名称(服务器模块,例如
myisam
、innodb
、mysys
或sql
)或插件名称。代码中变量的名称,格式为
XXX
(全局变量)或
(类CCC
::MMM
CCC
中的成员MMM
)。示例:COND_thread_cache
、THR_LOCK_myisam
、BINLOG::LOCK_index
。
idle
:已检测的空闲事件。此工具没有其他元素。error
:已检测的错误事件。此工具没有其他元素。memory
:已检测的内存事件。stage
:已检测的阶段事件。statement
:已检测的语句事件。transaction
:已检测的事务事件。此工具没有其他元素。wait
:已检测的等待事件。
idle
工具用于空闲事件,性能模式生成这些事件,如 第 29.12.3.5 节“socket_instances 表” 中对 socket_instances.STATE
列的描述所述。
error
工具指示是否收集服务器错误和警告的信息。此工具默认启用。 setup_instruments
表中 error
行的 TIMED
列不适用,因为不收集计时信息。
内存检测默认启用。 可以在启动时或在运行时通过更新 setup_instruments
表中相关检测的 ENABLED
列来启用或禁用内存检测。 内存检测的名称格式为 memory/
,其中 code_area
/instrument_name
code_area
是诸如 sql
或 myisam
之类的值,而 instrument_name
是检测详细信息。
以 memory/performance_schema/
为前缀的检测会显示 Performance Schema 中为内部缓冲区分配了多少内存。 memory/performance_schema/
检测是内置的,始终启用,并且无法在启动或运行时禁用。 内置内存检测仅显示在 memory_summary_global_by_event_name
表中。 有关更多信息,请参阅 第 29.17 节“Performance Schema 内存分配模型”。
阶段检测的名称格式为 stage/
,其中 code_area
/stage_name
code_area
是诸如 sql
或 myisam
之类的值,而 stage_name
指示语句处理的阶段,例如 Sorting result
或 Sending data
。 阶段对应于 SHOW PROCESSLIST
显示的线程状态或 Information Schema PROCESSLIST
表中可见的线程状态。
statement/abstract/*
:用于语句操作的抽象检测。 抽象检测在语句分类的早期阶段(在知道确切的语句类型之前)使用,然后在知道类型后更改为更具体的语句检测。 有关此过程的说明,请参阅 第 29.12.6 节“Performance Schema 语句事件表”。statement/com
:检测到的命令操作。 这些名称对应于COM_
操作(请参阅xxx
mysql_com.h
头文件和sql/sql_parse.cc
。 例如,statement/com/Connect
和statement/com/Init DB
检测对应于COM_CONNECT
和COM_INIT_DB
命令。statement/scheduler/event
:用于跟踪事件调度程序执行的所有事件的单个检测。 当计划的事件开始执行时,此检测将起作用。statement/sp
:由存储程序执行的检测到的内部指令。 例如,statement/sp/cfetch
和statement/sp/freturn
检测用于游标提取和函数返回指令。statement/sql
:检测到的 SQL 语句操作。 例如,statement/sql/create_db
和statement/sql/select
检测用于CREATE DATABASE
和SELECT
语句。
检测到的线程显示在 setup_threads
表中,该表公开了线程类名和属性。
线程检测以 thread
开头(例如,thread/sql/parser_service
或 thread/performance_schema/setup
)。
ndbcluster
插件线程的线程检测名称以 thread/ndbcluster/
开头; 有关这些的更多信息,请参阅 ndbcluster 插件线程。
wait/io
检测到的 I/O 操作。
wait/io/file
检测到的文件 I/O 操作。 对于文件,等待时间是等待文件操作完成的时间(例如,对
fwrite()
的调用)。 由于缓存,磁盘上的物理文件 I/O 可能不会在此调用中发生。wait/io/socket
检测到的套接字操作。 套接字检测的名称格式为
wait/io/socket/sql/
。 服务器为其支持的每个网络协议都有一个监听套接字。 与用于 TCP/IP 或 Unix 套接字文件连接的监听套接字关联的检测的socket_type
socket_type
值分别为server_tcpip_socket
或server_unix_socket
。 当监听套接字检测到连接时,服务器会将连接转移到由单独线程管理的新套接字。 新连接线程的检测的socket_type
值为client_connection
。wait/io/table
检测到的表 I/O 操作。 这些操作包括对持久基表或临时表的行级访问。 影响行的操作有提取、插入、更新和删除。 对于视图,等待与视图引用的基表相关联。
与大多数等待不同,表 I/O 等待可以包含其他等待。 例如,表 I/O 可能包括文件 I/O 或内存操作。 因此,
events_waits_current
对于表 I/O 等待通常有两行。 有关更多信息,请参阅 第 29.8 节“Performance Schema 原子和分子事件”。某些行操作可能会导致多个表 I/O 等待。 例如,插入可能会激活导致更新的触发器。
wait/lock
检测到的锁操作。
wait/lock/table
检测到的表锁操作。
wait/lock/metadata/sql/mdl
检测到的元数据锁操作。
wait/synch
检测到的同步对象。 对于同步对象,
TIMER_WAIT
时间包括尝试获取对象上的锁时阻塞的时间(如果有)。wait/synch/cond
一个线程使用条件向其他线程发出信号,指示它们正在等待的事情已发生。 如果单个线程正在等待某个条件,则它可以唤醒并继续执行。 如果有多个线程正在等待,则它们都可以唤醒并竞争它们正在等待的资源。
wait/synch/mutex
互斥对象,用于允许访问资源(例如可执行代码段),同时防止其他线程访问该资源。
wait/synch/prlock
优先级 读写锁 对象。
wait/synch/rwlock
普通的 读/写锁 对象,用于锁定特定变量以进行访问,同时防止其他线程使用它。 共享读锁可以由多个线程同时获取。 独占写锁一次只能由一个线程获取。
wait/synch/sxlock
共享-独占 (SX) 锁是一种 读写锁 对象,它提供对公共资源的写访问权限,同时允许其他线程进行不一致的读取。
sxlocks
优化并发性并提高读写工作负载的可扩展性。