Documentation Home
MySQL 8.0 参考手册  / 第 27 章 MySQL 性能模式  /  22.6 性能模式工具命名约定

22.6 性能模式工具命名约定

仪器名称由一系列由 '/'字符分隔的元素组成。示例名称:

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

仪器名称空间具有树状结构。乐器名称的元素从左到右提供了从更一般到更具体的进展。名称中元素的数量取决于乐器的类型。

名称中给定元素的解释取决于其左侧的元素。例如,myisam 出现在以下两个名称中,但 myisam第一个名称与文件 I/O 相关,而第二个名称与同步工具相关:

wait/io/file/myisam/log
wait/synch/cond/myisam/MI_SORT_INFO::cond

仪器名称由具有由性能模式实现定义的结构的前缀和由实现仪器代码的开发人员定义的后缀组成。仪器前缀的顶级元素表示仪器的类型。此元素还确定 setup_timers表中的哪个事件计时器适用于仪器。对于仪器名称的前缀部分,顶层表示仪器的类型。

乐器名称的后缀部分来自乐器本身的代码。后缀可能包括以下级别:

  • 主要元素的名称(服务器模块,例如 myisaminnodbmysyssql)或插件名称。

  • 代码中变量的名称,形式 XXX为(全局变量)或 (类中 的成员)。例子: , , 。 CCC::MMMMMMCCCCOND_thread_cacheTHR_LOCK_myisamBINLOG::LOCK_index

顶级仪器元件

  • idle:检测空闲事件。该仪器没有其他元素。

  • stage: 仪器舞台活动。

  • statement:一个检测语句事件。

  • wait:检测等待事件。

空闲乐器元素

idle仪器用于空闲事件,如第 22.12.3.5 节,“socket_instances 表”socket_instances.STATE中的 列 描述中所讨论的那样,Performance Schema 生成这些事件。

舞台乐器元素

阶段工具的名称形式为 ,其中是一个值,例如 或, 表示语句处理的阶段,例如 或。阶段对应于表中显示的或可见 的线程状态 。 stage/code_area/stage_namecode_areasqlmyisamstage_nameSorting resultSending dataSHOW PROCESSLISTINFORMATION_SCHEMA.PROCESSLIST

声明工具元素

  • statement/abstract/*: 语句操作的抽象工具。在确切语句类型未知之前,在语句分类的早期阶段使用抽象工具,然后在类型已知时更改为更具体的语句工具。有关此过程的描述,请参阅 第 22.12.6 节,“性能模式语句事件表”

  • statement/com:检测命令操作。这些具有与操作对应的名称 (请参阅头文件和。例如,和 工具对应于和 命令。 COM_xxxmysql_com.hsql/sql_parse.ccstatement/com/Connectstatement/com/Init DBCOM_CONNECTCOM_INIT_DB

  • statement/sql:检测的 SQL 语句操作。例如, statement/sql/create_dband statement/sql/select工具用于CREATE DATABASEand SELECT语句。

等待乐器元素

  • wait/io

    检测 I/O 操作。

    • wait/io/file

      检测文件 I/O 操作。对于文件,等待是等待文件操作完成的时间(例如,调用fwrite())。由于缓存,磁盘上的物理文件 I/O 可能不会在此调用中发生。

    • wait/io/socket

      检测套接字操作。套接字工具的名称为 . 服务器为其支持的每个网络协议都有一个侦听套接字。与用于 TCP/IP 或 Unix 套接字文件连接的侦听套接字关联的工具分别具有 或 值 。当侦听套接字检测到连接时,服务器会将连接传输到由单独线程管理的新套接字。新连接螺纹的仪器 值为. wait/io/socket/sql/socket_typesocket_typeserver_tcpip_socketserver_unix_socketsocket_typeclient_connection

    • wait/io/table

      检测表 I/O 操作。这些包括对持久基表或临时表的行级访问。影响行的操作是获取、插入、更新和删除。对于视图,等待与视图引用的基表相关联。

      与大多数等待不同,表 I/O 等待可以包括其他等待。例如,表 I/O 可能包括文件 I/O 或内存操作。因此, events_waits_current对于表 I/O 等待通常有两行。有关详细信息,请参阅 第 22.8 节,“性能模式原子和分子事件”

      某些行操作可能会导致多个表 I/O 等待。例如,插入可能会激活导致更新的触发器。

  • wait/lock

    检测锁定操作。

    • wait/lock/table

      检测表锁定操作。

  • wait/synch

    一个检测的同步对象。对于同步对象,该TIMER_WAIT时间包括尝试获取对象锁时阻塞的时间量(如果有)。

    • wait/synch/cond

      一个线程使用一个条件来向其他线程发出信号,表明它们正在等待的事情已经发生。如果单个线程正在等待一个条件,它可以唤醒并继续执行。如果有多个线程在等待,它们都可以醒来并竞争它们正在等待的资源。

    • wait/synch/mutex

      一种互斥对象,用于允许访问资源(例如一段可执行代码)同时防止其他线程访问该资源。

    • wait/synch/rwlock

      读/写锁对象,用于锁定特定变量以供访问,同时防止其他线程使用它。一个共享读锁可以被多个线程同时获取。独占写锁一次只能由一个线程获取。