文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  MySQL 性能模式  /  性能模式工具命名约定

29.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
errors

工具命名空间具有树状结构。工具名称中从左到右的元素表示从更通用到更具体的进展。名称具有的元素数量取决于工具的类型。

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

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

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

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

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

  • 代码中变量的名称,格式为 XXX(全局变量)或 CCC::MMM(类 CCC 中的成员 MMM)。例如:COND_thread_cacheTHR_LOCK_myisamBINLOG::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 是一个值,例如 sqlmyisam,而 instrument_name 是工具详细信息。

memory/performance_schema/ 为前缀的 Instruments 公开了性能模式中为内部缓冲区分配了多少内存。memory/performance_schema/ Instruments 是内置的,始终启用,并且无法在启动或运行时禁用。内置内存 Instruments 仅显示在 memory_summary_global_by_event_name 表中。有关更多信息,请参阅第 29.17 节 “性能模式内存分配模型”

阶段 Instrument 元素

阶段 Instruments 的名称格式为 stage/code_area/stage_name,其中 code_area 是诸如 sqlmyisam 之类的值,而 stage_name 指示语句处理的阶段,例如 正在排序结果正在发送数据。阶段对应于 SHOW PROCESSLIST 显示的线程状态或 Information Schema PROCESSLIST 表中可见的线程状态。

语句 Instrument 元素

  • statement/abstract/*:用于语句操作的抽象 Instrument。抽象 Instruments 在语句分类的早期阶段(即在知道确切的语句类型之前)使用,然后在知道类型后更改为更具体的语句 Instrument。有关此过程的说明,请参阅第 29.12.6 节 “性能模式语句事件表”

  • statement/com:已检测的命令操作。它们的名称对应于 COM_xxx 操作(请参阅 mysql_com.h 头文件和 sql/sql_parse.cc)。例如,statement/com/Connectstatement/com/Init DB Instruments 对应于 COM_CONNECTCOM_INIT_DB 命令。

  • statement/scheduler/event:用于跟踪事件调度程序执行的所有事件的单个 Instrument。此 Instrument 在计划事件开始执行时起作用。

  • statement/sp:由存储程序执行的已检测内部指令。例如,statement/sp/cfetchstatement/sp/freturn Instruments 用于游标提取和函数返回指令。

  • statement/sql:已检测的 SQL 语句操作。例如,statement/sql/create_dbstatement/sql/select Instruments 用于 CREATE DATABASESELECT 语句。

线程 Instrument 元素

已检测的线程显示在 setup_threads 表中,该表公开了线程类名称和属性。

线程 Instruments 以 thread 开头(例如,thread/sql/parser_servicethread/performance_schema/setup)。

ndbcluster 插件线程的线程 Instruments 名称以 thread/ndbcluster/ 开头;有关这些内容的更多信息,请参阅ndbcluster 插件线程

等待 Instrument 元素

  • wait/io

    已检测的 I/O 操作。

    • wait/io/file

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

    • wait/io/socket

      已检测的套接字操作。套接字 Instruments 的名称格式为 wait/io/socket/sql/socket_type。服务器为其支持的每个网络协议都有一个侦听套接字。与 TCP/IP 或 Unix 套接字文件连接的侦听套接字关联的 Instruments 的 socket_type 值分别为 server_tcpip_socketserver_unix_socket。当侦听套接字检测到连接时,服务器会将连接传输到由单独线程管理的新套接字。新连接线程的 Instrument 的 socket_type 值为 client_connection

    • wait/io/table

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

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

      某些行操作可能会导致多个表 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 优化了并发性并提高了读写工作负载的可扩展性。