仪表名称由以 '/' 字符分隔的元素序列组成。示例名称:
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::MMMCCC中的成员MMM)形式出现。示例:COND_thread_cache、THR_LOCK_myisam、BINLOG::LOCK_index。
-
idle:一个空闲事件仪表。该仪表没有进一步的元素。 -
error:一个错误事件仪表。该仪表没有进一步的元素。 -
memory:一个内存事件仪表。 -
stage:一个阶段事件仪表。 -
statement:一个语句事件仪表。 -
transaction:一个事务事件仪表。该仪表没有进一步的元素。 -
wait:一个等待事件仪表。
空闲仪表 idle 用于空闲事件,性能模式生成这些事件,如 socket_instances.STATE 列的描述中所述 第 29.12.3.5 节,“socket_instances 表”。
该 error 仪表指示是否收集服务器错误和警告信息。该仪表默认启用。TIMED 列在 error 行中的 setup_instruments 表中无效,因为不收集计时信息。
内存仪表默认启用。可以在启动时或在运行时动态更新 setup_instruments 表中的相关仪表的 ENABLED 列来启用或禁用内存仪表。内存仪表的名称形式为 memory/,其中 code_area/instrument_namecode_area 是一个值,如 sql 或 myisam,instrument_name 是仪表详细信息。
以 memory/performance_schema/ 为前缀的仪表显示 Performance Schema 的内部缓冲区分配的内存量。这些仪表是内置的,总是启用的,不能在启动时或运行时禁用。内置内存仪表仅在 memory_summary_global_by_event_name 表中显示。有关更多信息,请参阅 第 29.17 节,“Performance Schema 内存分配模型”。
阶段仪表的名称形式为 stage/,其中 code_area/stage_namecode_area 是一个值,如 sql 或 myisam,stage_name 表示语句处理的阶段,如 Sorting result 或 Sending data。阶段对应于 SHOW PROCESSLIST 或 Information Schema PROCESSLIST 表中显示的线程状态。
-
statement/abstract/*:一个抽象仪表,用于语句操作。在语句分类的早期阶段使用抽象仪表,然后在知道确切的语句类型时更改为更具体的语句仪表。有关该过程的描述,请参阅 第 29.12.6 节,“Performance Schema 语句事件表”。 -
statement/com:一个命令操作仪表。这些仪表的名称对应于COM_操作(见xxxmysql_com.h头文件和sql/sql_parse.cc)。例如,statement/com/Connect和statement/com/Init DB仪表对应于COM_CONNECT和COM_INIT_DB命令。 -
statement/scheduler/event:一个单一仪表,用于跟踪 Event Scheduler 执行的所有事件。当计划事件开始执行时,该仪表生效。 -
statement/sp: 一个内部存储程序执行的仪表指令。例如,statement/sp/cfetch和statement/sp/freturn仪表用于游标fetch和函数返回指令。 -
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/。服务器为每个网络协议维护一个监听套接字。监听套接字关联的仪表的socket_typesocket_type值为server_tcpip_socket或server_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优化了并发性,并且提高了读写工作负载的可扩展性。
-