文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Letter) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  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/ 为前缀的检测会显示 Performance Schema 中为内部缓冲区分配了多少内存。 memory/performance_schema/ 检测是内置的,始终启用,并且无法在启动或运行时禁用。 内置内存检测仅显示在 memory_summary_global_by_event_name 表中。 有关更多信息,请参阅 第 29.17 节“Performance Schema 内存分配模型”

阶段检测元素

阶段检测的名称格式为 stage/code_area/stage_name,其中 code_area 是诸如 sqlmyisam 之类的值,而 stage_name 指示语句处理的阶段,例如 Sorting resultSending 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/Connectstatement/com/Init DB 检测对应于 COM_CONNECTCOM_INIT_DB 命令。

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

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

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

线程检测元素

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

线程检测以 thread 开头(例如,thread/sql/parser_servicethread/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/socket_type。 服务器为其支持的每个网络协议都有一个监听套接字。 与用于 TCP/IP 或 Unix 套接字文件连接的监听套接字关联的检测的 socket_type 值分别为 server_tcpip_socketserver_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 优化并发性并提高读写工作负载的可扩展性。