10bet网址
MySQL性能模式
相关的文档10bet官方网站 下载这个摘录
PDF (Ltr)- 1.2 mb
PDF (A4)- 1.2 mb


10.2.3 setup_instruments表

setup_instruments表中列出了可以收集事件的仪器对象的类:

SELECT * FROM performance_schema。setup_instruments\G *************************** 1. row *************************** NAME: wait/synch/mutex/pfs/LOCK_pfs_share_list ENABLED: NO TIMED: NO PROPERTIES: singleton VOLATILITY: 1 DOCUMENTATION: Components can provide their own performance_schema tables. This lock protects the list of such tables definitions. ... *************************** 369. row *************************** NAME: stage/sql/executing ENABLED: NO TIMED: NO PROPERTIES: VOLATILITY: 0 DOCUMENTATION: NULL ... *************************** 687. row *************************** NAME: statement/abstract/Query ENABLED: YES TIMED: YES PROPERTIES: mutable VOLATILITY: 0 DOCUMENTATION: SQL query just received from the network. At this point, the real statement type is unknown, the type will be refined after SQL parsing. ... *************************** 696. row *************************** NAME: memory/performance_schema/metadata_locks ENABLED: YES TIMED: NULL PROPERTIES: global_statistics VOLATILITY: 1 DOCUMENTATION: Memory used for table performance_schema.metadata_locks ...

添加到源代码中的每个仪器都为setup_instruments表,即使在不执行仪器化代码时也是如此。工具被启用并执行时,将创建工具实例,这些实例可以在xxx_instances表,如file_instancesrwlock_instances

修改最setup_instruments行立即影响监视。对于某些仪器,修改仅在服务器启动时有效;在运行时更改它们没有任何效果。这主要影响服务器中的互斥锁、条件和rwlock,尽管可能有其他工具也是如此。

的角色的详细信息setup_instruments表中的事件过滤,请参见第5.3节,“事件预过滤”

setup_instruments表有这些列:

  • 的名字

    仪器名称。仪器名称可能有多个部分,并形成一个层次,如在第七章,性能模式仪器命名约定.执行文书所产生的事件有一个EVENT_NAME从票据中提取的价值的名字价值。(事件并没有真正的意义的名字,但这提供了一种将事件与工具关联的方法。)

  • 启用

    仪器是否开启。这个值是是的没有.被禁用的仪器不会产生事件。此列可以修改,尽管正在设置启用对已经创建的仪器无效。

  • 定时

    仪器是否计时。这个值是是的没有,或.此列可以修改,尽管正在设置定时对已经创建的仪器无效。

    一个定时的价值表示该仪器不支持计时。例如,内存操作没有计时,所以它们的定时列是

    设置定时对于一个支持计时的仪器来说没有效果,设定也一样定时非-对于不支持计时的仪器。

    如果一个已启用的仪器没有计时,则表示该仪器的代码已启用,但计时器未计时。仪器产生的事件TIMER_STARTTIMER_END,TIMER_WAIT定时器值。这又导致在计算汇总表中的总和、最小值、最大值和平均时间值时忽略这些值。

  • 属性

    仪器性能。本专栏使用数据类型,因此每台仪器可以设置以下列表中的多个标志:

    • global_statistics:该工具只产生全局摘要。更细级别的摘要不可用,例如每线程、帐户、用户或主机。例如,大多数记忆工具只产生全局摘要。

    • 可变的如这仪器可以变异变成一个更具体的。此属性仅应用于语句工具。

    • 进步该仪器能报告进度数据。这个属性只适用于舞台乐器。

    • 单例如这仪器只有一个实例。例如,服务器中的大多数全局互斥锁都是单例的,因此相应的工具也是单例的。

    • 用户:仪器与用户工作量(与系统工作量相反)直接相关。其中一个工具是等待/ io /套筒/ sql / client_connection

  • 波动

    仪器波动。波动率值从低到高。对应的值PSI_VOLATILITY_xxx中定义的常量mysql / psi / psi_base.h头文件:

    #定义psi_挥发性未知0 #定义psi_挥发性永久1 #定义psi_挥发性预置2 #定义psi_挥发性ddl 3 #定义psi_挥发性缓存4 #定义psi_挥发性会话5 #定义psi_挥发性事务6 #定义psi_挥发性查询7 #定义psi_挥发性intra_query 8

    波动列是纯信息性的,为用户(和性能模式代码)提供一些关于仪器运行时行为的提示。

    具有低波动指数(PERMANENT = 1)的仪器在服务器启动时创建一次,并且在正常的服务器运行期间从不销毁或重新创建。它们只在服务器关闭时被销毁。

    例如,等待/同步/ / pfs / LOCK_pfs_share_list互斥互斥锁的波动性为1,这意味着它只创建一次。因此,来自仪器本身的可能开销(即互斥锁初始化)对该仪器没有影响。只有在锁定或解锁互斥锁时才会发生运行时开销。

    具有较高波动指数(例如,SESSION = 5)的工具将为每个用户会话创建和销毁。例如,等待官/同步/互斥锁/ sql /:: LOCK_query_plan互斥锁在每次会话连接时被创建,在会话断开时被销毁。

    这个互斥量对Performance Schema开销更敏感,因为开销不仅来自锁定和解锁工具,还来自互斥量创建和销毁工具,这是更经常执行的。

    波动的另一个方面是是否以及何时更新启用列实际上有一些作用:

    • 一个更新启用影响随后创建的仪器对象,但对已经创建的仪器没有影响。

    • 更多的仪器挥发性中的新设置setup_instruments表更早。

    例如,此语句不影响LOCK_query_plan互斥锁,但对更新后创建的新会话有影响:

    更新performance_schema。setup_instruments集启用=价值WHERE NAME = 'wait/sync /mutex/sql/THD::LOCK_query_plan';

    这句话实际上没有任何效果:

    更新performance_schema。setup_instruments集启用=价值WHERE NAME = 'wait/sync /mutex/pfs/LOCK_pfs_share_list';

    这个互斥锁是永久性的,并且在执行更新之前就已经创建了。互斥锁将不再被创建,因此启用价值setup_instruments从未使用过。要启用或禁用此互斥锁,请使用mutex_instances表。

  • 10bet官方网站

    描述乐器用途的弦。这个值是如果无描述信息。

setup_instruments表有以下索引:

  • 主键(的名字

截断表是不允许的setup_instruments表格

从MySQL 8.0.27开始,为了帮助监视和故障排除,使用Performance Schema检测工具将检测线程的名称导出到操作系统。这将启用显示线程名的实用程序,例如调试器和Unixps命令,显示“distinct”mysqld线程名而不是线程名mysqld.该特性仅支持Linux、macOS和Windows操作系统。

假设mysqld的版本运行在一个系统上ps它支持此调用语法:

ps -C mysqld H -o "pid tid cmd comm"

不需要将线程名导出到操作系统,该命令显示的输出如下所示命令值是mysqld

PID TID CMD命令1377 1377 /usr/sbin/mysqld mysqld 1377 1528 /usr/sbin/mysqld mysqld 1377 1529 /usr/sbin/mysqld mysqld 1377 1530 /usr/sbin/mysqld mysqld 1377 1531 /usr/sbin/mysqld mysqld 1377 1534 /usr/sbin/mysqld mysqld 1377 1535 /usr/sbin/mysqld mysqld 1377 1588 /usr/sbin/mysqld xpl_worker1 1377 1589 /usr/sbin/mysqld xpl_worker0 1377 1590 /usr/sbin/mysqld mysqld 1377 1594 /usr/sbin/mysqld mysqld 1377 1595 /usr/sbin/mysqld mysqld

通过将线程名称导出到操作系统,输出看起来像这样,线程的名称与它们的仪器名称相似:

PID TID CMD命令27668 27668 /usr/sbin/mysqld mysqld 27668 27671 /usr/sbin/mysqld ib_io_ibuf 27668 27672 /usr/sbin/mysqld ib_io_log 27668 27673 /usr/sbin/mysqld ib_io_rd-1 27668 27674 /usr/sbin/mysqld ib_io_rd-2 27668 27677 /usr/sbin/mysqld ib_io_wr-1 27668 27678 /usr/sbin/mysqld ib_io_wr-2 27668 27699 /usr/sbin/mysqld xpl_worker-2 27668 27700 /usr/sbin/mysqld xpl_accept-1 27668 27710 /usr/sbin/mysqld evt_sched 27668 27711 /usr/sbin/mysqld sig_handler 27668 27933 /usr/sbin/mysqld连接

在可行的情况下,对同一类中的不同线程实例进行编号,以提供不同的名称。由于名称长度与潜在的大量连接有关,因此对连接进行简单命名连接