Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  MySQL Performance Schema  /  Performance Schema Instrument Naming Conventions

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 用于空闲事件,性能模式生成这些事件,如 socket_instances.STATE 列的描述中所述 第 29.12.3.5 节,“socket_instances 表”

错误Instrument元素

error 仪表指示是否收集服务器错误和警告信息。该仪表默认启用。TIMED 列在 error 行中的 setup_instruments 表中无效,因为不收集计时信息。

内存Instrument元素

内存仪表默认启用。可以在启动时或在运行时动态更新 setup_instruments 表中的相关仪表的 ENABLED 列来启用或禁用内存仪表。内存仪表的名称形式为 memory/code_area/instrument_name,其中 code_area 是一个值,如 sqlmyisaminstrument_name 是仪表详细信息。

memory/performance_schema/ 为前缀的仪表显示 Performance Schema 的内部缓冲区分配的内存量。这些仪表是内置的,总是启用的,不能在启动时或运行时禁用。内置内存仪表仅在 memory_summary_global_by_event_name 表中显示。有关更多信息,请参阅 第 29.17 节,“Performance Schema 内存分配模型”

阶段Instrument元素

阶段仪表的名称形式为 stage/code_area/stage_name,其中 code_area 是一个值,如 sqlmyisamstage_name 表示语句处理的阶段,如 Sorting resultSending data。阶段对应于 SHOW PROCESSLIST 或 Information Schema PROCESSLIST 表中显示的线程状态。

语句Instrument元素

  • 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:一个单一仪表,用于跟踪 Event Scheduler 执行的所有事件。当计划事件开始执行时,该仪表生效。

  • statement/sp: 一个内部存储程序执行的仪表指令。例如,statement/sp/cfetchstatement/sp/freturn 仪表用于游标fetch和函数返回指令。

  • 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。服务器为每个网络协议维护一个监听套接字。监听套接字关联的仪表的 socket_type 值为 server_tcpip_socketserver_unix_socket。当监听套接字检测到连接时,服务器将连接传递给一个新的套接字线程。新的连接线程的仪表的 socket_type 值为 client_connection

    • wait/io/table

      一个仪表的表I/O操作。这些包括对持久基本表或临时表的行级访问。影响行的操作是fetch、insert、update和delete。对于视图,等待与基本表关联的视图。

      与大多数等待不同,表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

      一个优先级 rw 锁 锁对象。

    • wait/synch/rwlock

      一个普通的 读/写锁 对象,用于锁定特定变量以便访问,同时防止其他线程使用该变量。多个线程可以同时获取共享读锁,而独占写锁只能由一个线程在同一时间获取。

    • wait/synch/sxlock

      共享-独占(SX)锁是一种类型的 rw 锁 锁对象,提供对公共资源的写访问,同时允许其他线程进行不一致的读取。sxlocks 优化了并发性,并且提高了读写工作负载的可扩展性。