10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.3 mb
PDF (A4)- 41.4 mb
PDF (RPM)- 39.6 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.3 mb
HTML下载(RPM)- 7.8 mb
手册页(TGZ)- 260.7 kb
手册页(Zip)- 371.8 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/MySQL性能模式/性能模式状态监控

27.7性能模式状态监控

有几个与性能模式相关的状态变量:

mysql> SHOW STATUS LIKE 'perf%'+-----------------------------------------------+-------+ | Variable_name |值  | +-----------------------------------------------+-------+ | Performance_schema_accounts_lost | 0 | | Performance_schema_cond_classes_lost | 0 | | Performance_schema_cond_instances_lost | 0 | | Performance_schema_digest_lost | 0 | | Performance_schema_file_classes_lost | 0 | | Performance_schema_file_handles_lost | 0 | | Performance_schema_file_instances_lost | 0 | | Performance_schema_hosts_lost | 0 | |Performance_schema_locker_lost | 0 | | Performance_schema_memory_classes_lost | 0 | | Performance_schema_metadata_lock_lost | 0 | | Performance_schema_mutex_classes_lost | 0 | | Performance_schema_mutex_instances_lost | 0 | | Performance_schema_nested_statement_lost | 0 | | Performance_schema_program_lost | 0 | | Performance_schema_rwlock_classes_lost | 0 | | Performance_schema_rwlock_instances_lost | 0 | | Performance_schema_session_connect_attrs_lost | 0 | |Performance_schema_socket_classes_lost | 0 | | Performance_schema_socket_instances_lost | 0 | | Performance_schema_stage_classes_lost | 0 | | Performance_schema_statement_classes_lost | 0 | | Performance_schema_table_handles_lost | 0 | | Performance_schema_table_instances_lost | 0 | | Performance_schema_thread_classes_lost | 0 | | Performance_schema_thread_instances_lost | 0 | | Performance_schema_users_lost | 0  | +-----------------------------------------------+-------+

Performance Schema状态变量提供了关于由于内存限制而无法加载或创建的检测的信息。这些变量的名称有几种形式:

  • Performance_schema_xxx_classes_lost指示有多少种类型的仪器xxx无法载入。

  • Performance_schema_xxx_instances_lost指示对象类型的实例数xxx无法创建。

  • Performance_schema_xxx_handles_lost指示对象类型的实例数xxx无法打开。

  • Performance_schema_locker_lost指示有多少个事件失去了或者没有记录。

例如,如果在服务器源中插入了一个互斥锁,但服务器不能在运行时为该互斥锁分配内存,则互斥锁会递增Performance_schema_mutex_classes_lost.互斥锁仍然作为一个同步对象(也就是说,服务器继续正常工作),但是不收集它的性能数据。如果可以分配该工具,则可以将其用于初始化检测互斥量实例。对于一个单例互斥量,例如全局互斥量,只有一个实例。其他互斥对象在不同的缓存和数据缓冲区中,每个连接或每个页面都有一个实例,因此实例的数量随时间而变化。增加最大连接数或某些缓冲区的最大大小会增加一次可以分配的最大实例数。如果服务器不能创建给定的检测互斥实例,则增加Performance_schema_mutex_instances_lost

假设下列条件成立:

  • 启动服务器时使用——performance_schema_max_mutex_classes = 200选项,因此有200个互斥锁工具的空间。

  • 已经加载了150个互斥锁工具。

  • 插件名为plugin_a包含40个互斥锁工具。

  • 插件名为plugin_b包含20个互斥锁工具。

服务器根据插件需要的互斥量和可用的互斥量为插件分配互斥量,如下语句序列所示:

安装插件plugin_a

服务器现在有150+40 = 190个互斥锁工具。

卸载插件插件

服务器仍然有190个仪器。插件代码生成的所有历史数据仍然可用,但不会收集仪器的新事件。

安装插件插件

服务器检测到已经定义了40种乐器,因此不会创建新的乐器,并且重用先前分配的内部内存缓冲区。服务器仍然有190个仪器。

安装插件插件

服务器有200-190 = 10个仪器的空间(在本例中是互斥类),并且看到插件包含20个新仪器。10个仪器被装载,10个被丢弃或丢失。Performance_schema_mutex_classes_lost表示丢失的工具(互斥锁类)的数量:

mysql> SHOW STATUS LIKE ' perf%mutex_classes_lost ';+---------------------------------------+-------+ | Variable_name |值  | +---------------------------------------+-------+ | Performance_schema_mutex_classes_lost | 10  | +---------------------------------------+-------+ 1行集(0.10秒)

仪器仍然工作并收集(部分)数据plugin_b

当服务器无法创建互斥锁工具时,会出现以下结果:

刚才描述的模式适用于所有类型的工具,而不仅仅是互斥。

值为Performance_schema_mutex_classes_lost大于0的情况有两种:

  • 为了节省几个字节的内存,启动服务器时使用——performance_schema_max_mutex_classes =N,在那里N小于默认值。选择默认值足以加载MySQL发行版中提供的所有插件,但如果一些插件从未加载,则可以减少默认值。例如,您可以选择不加载发行版中的某些存储引擎。

  • 您加载了一个第三方插件,该插件针对性能模式进行了检测,但在启动服务器时不允许该插件的检测内存需求。因为它来自第三方,所以在选择的默认值中不考虑此引擎的仪器内存消耗performance_schema_max_mutex_classes

    如果服务器没有足够的资源用于插件的工具,而你没有显式地分配更多的使用——performance_schema_max_mutex_classes =N,加载插件会导致仪器的饥饿。

如果值选择为performance_schema_max_mutex_classes太小,在错误日志中没有报告错误,并且在运行时没有失败。但是,表中的内容performance_schema数据库遗漏事件。的Performance_schema_mutex_classes_lost状态变量是表示某些事件由于未能创建工具而在内部删除的唯一可见标志。

如果一个工具没有丢失,性能模式就知道它,并在测试实例时使用它。例如,等待/同步/互斥锁/ sql / LOCK_delete互斥锁工具的名称是否在setup_instruments表格在代码(in)中创建互斥锁时使用这个工具:: LOCK_delete),但是在服务器运行时需要使用多个互斥锁实例。在这种情况下,LOCK_delete是每个连接的互斥量(),所以如果一个服务器有1000个连接,就有1000个线程,1000个被检测LOCK_delete互斥锁实例(:: LOCK_delete).

如果服务器没有空间容纳所有这1000个插装的互斥对象(实例),那么有些互斥对象是使用插装创建的,有些则不使用插装创建。如果服务器只能创建800个实例,则丢失200个实例。服务器继续运行,但增量递增Performance_schema_mutex_instances_lost表示无法创建实例。

值为Performance_schema_mutex_instances_lost当代码在运行时初始化的互斥对象多于分配的互斥对象时,可能会发生大于0的情况——performance_schema_max_mutex_instances =N

底线是如果显示状态像'perf%'表示没有丢失任何东西(所有值都是零),Performance Schema数据是准确的,可以依赖。如果丢失了某些内容,则数据是不完整的,并且由于提供给它使用的内存不足,Performance Schema无法记录所有内容。在这种情况下,是具体的Performance_schema_xxx_lost变量表示问题区域。

在某些情况下,故意造成仪器饥饿可能是合适的。例如,如果不关心文件I/O的性能数据,可以在启动服务器时将所有与文件I/O相关的performance Schema参数设置为0。没有为与文件相关的类、实例或句柄分配内存,所有文件事件都将丢失。

使用显示引擎performance_schema状态检查Performance Schema代码的内部操作:

mysql>显示引擎PERFORMANCE_SCHEMA状态*************************** 3所示。行  *************************** 类型:performance_schema名字:events_waits_history。size状态:76 ***************************行  *************************** 类型:performance_schema名字:events_waits_history。计数状态:10000  *************************** 5。行  *************************** 类型:performance_schema名字:events_waits_history。内存状态:760000…*************************** 57。行  *************************** 类型:performance_schema名字:performance_schema。内存状态:26459600…

这个语句旨在帮助DBA理解不同的性能模式选项对内存需求的影响。有关字段含义的描述,请参见第13.7.7.15节,“SHOW ENGINE语句”