• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 性能模式工具的命名约定

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

    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相关,而第二个名称与同步工具相关:

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

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

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

    • 一种主要成分名(一服务器模块,例如myisaminnodbmysys,或sql)或插件名称。
    • 代码中变量的名称,形式为XXX(全局变量)或(类中的成员)。例如:,,。CCC::MMMMMMCCCCOND_thread_cacheTHR_LOCK_myisamBINLOG::LOCK_index
    • 顶级仪器组件
    • 空闲的仪器组件
    • 错误仪器组件
    • 内存仪器组件
    • 舞台仪器配件
    • 声明工具组件
    • 螺纹仪器组件
    • 等待仪器组件

    顶级仪器组件

    • idle:检测到的空闲事件。该仪器没有其他组件。
    • error:检测到的错误事件。该仪器没有其他组件。
    • memory:检测到的内存事件。
    • stage:仪器化的舞台活动。
    • statement:仪表语句事件。
    • transaction:检测交易事件。该仪器没有其他组件。
    • wait:检测到的等待事件。

    空闲的仪器组件

    idle工具用于空闲事件,性能模式将生成该空闲事件,如“ socket_instances表”中的socket_instances.STATE列说明中所述。

    错误仪器组件

    error仪器指示是否为服务器错误和警告收集信息。默认情况下启用此仪器。该表中TIMEDerror行的列setup_instruments不适用,因为未收集计时信息。

    内存仪器组件

    默认情况下启用内存检测。可以在启动时启用或禁用内存工具,或者在运行时通过更新表中ENABLED相关工具的列来动态启用setup_instruments。存储器仪器具有如下形式的名称,其中是一个值,例如或,并且是仪器的细节。memory/code_area/instrument_namecode_areasqlmyisaminstrument_name

    用前缀命名的工具会memory/performance_schema/公开性能模式中为内部缓冲区分配的内存量。该memory/performance_schema/仪器是建立在,始终处于启用状态,并且不能在启动或运行时被禁用。内置存储工具仅显示在memory_summary_global_by_event_name表格中。有关更多信息,请参见“性能模式内存分配模型”。

    舞台仪器配件

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

    声明工具组件

    • statement/abstract/*:用于语句操作的抽象工具。在声明确切的语句类型之前,在语句分类的早期阶段使用抽象工具,然后在知道类型的情况下将其更改为更具体的语句工具。有关此过程的说明,请参见“性能架构语句事件表”。
    • statement/com:仪表命令操作。它们具有与操作相对应的名称(请参见头文件和。例如,and 仪器对应于and 命令。COM_xxxmysql_com.hsql/sql_parse.ccstatement/com/Connectstatement/com/Init DBCOM_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)开头。

    等待仪器组件

    • 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等待通常有两行。有关更多信息,请参见“性能架构原子和分子事件”。

        某些行操作可能会导致多个表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

        优先级rwlock 锁定对象。

      • wait/synch/rwlock

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

      • wait/synch/sxlock

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