Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  MySQL Performance Schema

第29章 MySQL 性能模式

目录

29.1 性能模式快速入门
29.2 性能模式构建配置
29.3 性能模式启动配置
29.4 性能模式运行时配置
29.4.1 性能模式事件计时
29.4.2 性能模式事件过滤
29.4.3 事件预过滤
29.4.4 按检测信号预过滤
29.4.5 按对象预过滤
29.4.6 按线程预过滤
29.4.7 按消费者预过滤
29.4.8 消费者配置示例
29.4.9 为过滤操作命名检测信号或消费者
29.4.10 确定检测的内容
29.5 性能模式查询
29.6 性能模式检测信号命名约定
29.7 性能模式状态监控
29.8 性能模式原子和分子事件
29.9 Performance Schema 表 for Current and Historical Events
29.10 性能模式语句摘要和采样
29.11 性能模式通用表特征
29.12 性能模式表描述
29.12.1 性能模式表参考
29.12.2 Performance Schema 设置表
29.12.3 Performance Schema 实例表
29.12.4 Performance Schema 等待事件表
29.12.5 Performance Schema 阶段事件表
29.12.6 Performance Schema 语句事件表
29.12.7 Performance Schema 事务表
29.12.8 Performance Schema 连接表
29.12.9 Performance Schema 连接属性表
29.12.10 Performance Schema 用户定义变量表
29.12.11 Performance Schema 复制表
29.12.12 Performance Schema NDB 集群表
29.12.13 Performance Schema 锁表
29.12.14 Performance Schema 系统变量表
29.12.15 Performance Schema 状态变量表
29.12.16 Performance Schema 线程池表
29.12.17 Performance Schema 防火墙表
29.12.18 Performance Schema 密钥环表
29.12.19 Performance Schema 克隆表
29.12.20 Performance Schema 摘要表
29.12.21 Performance Schema 遥测表
29.12.22 Performance Schema 其他表
29.13 Performance Schema 选项和变量参考
29.14 Performance Schema 命令选项
29.15 Performance Schema 系统变量
29.16 Performance Schema 状态变量
29.17 Performance Schema 内存分配模型
29.18 Performance Schema 和插件
29.19 使用 Performance Schema 诊断问题
29.19.1 使用 Performance Schema 进行查询分析
29.19.2 获取父事件信息
29.20 Performance Schema 的限制

MySQL性能架构是一种用于监控MySQL Server执行的低级别特性。性能架构具有以下特点:

  • 性能_schema提供了一种方式,以实时检查服务器的内部执行。它使用PERFORMANCE_SCHEMA存储引擎和performance_schema数据库实现。性能_schema主要关注性能数据。这与INFORMATION_SCHEMA不同,它用于检查元数据。

  • 性能_schema监控服务器事件。一个事件是服务器执行的任何事情,它需要时间,并且已经被instrumented以便收集时间信息。通常,事件可以是一个函数调用、操作系统的等待、SQL语句执行的某个阶段,或者整个语句或一组语句。事件收集提供了关于同步调用(例如mutexes)、文件和表I/O、表锁等服务器和多个存储引擎的信息。

  • 性能_schema事件与服务器的二进制日志中写入的事件(描述数据修改)和事件调度器事件(是类型的存储程序)不同。

  • 性能_schema事件是特定于MySQL Server的一个实例的。性能_schema表被认为是服务器的本地表,且对它们的更改不会被复制或写入到二进制日志中。

  • 当前事件可用,事件历史和摘要也可用。这使您可以确定instrumented活动的次数和它们所需的时间。事件信息可用于显示特定线程的活动,或者与特定对象相关的活动,例如mutex或文件。

  • PERFORMANCE_SCHEMA存储引擎使用instrumentation points在服务器源代码中收集事件数据。

  • 收集的事件被存储在performance_schema数据库中的表中。这些表可以使用SELECT语句像其他表一样查询。

  • 性能_schema配置可以动态地通过在performance_schema数据库中的表中更新SQL语句来修改。配置更改将立即生效。

  • 性能_schema表是内存表,不使用持久的磁盘存储。内容从服务器启动时开始重新填充,到服务器关闭时被销毁。

  • 监控在所有支持MySQL的平台上可用。

    可能存在一些限制:平台可能会有不同的计时器。对于存储引擎可能不会实现所有存储引擎的instrumentation。每个第三方引擎的instrumentation是引擎维护者的责任。请参阅第29.20节,“性能_schema限制”

  • 数据收集通过修改服务器源代码来实现,以添加instrumentation。与其他功能,如复制或事件调度器不同,没有单独的线程与性能_schema相关。

性能Schema旨在提供对服务器执行的有用信息,同时对服务器性能的影响最小。实现遵循以下设计目标:

  • 启用性能Schema不会改变服务器行为。例如,它不会改变线程调度,也不会改变查询执行计划(如EXPLAIN所示)。

  • 服务器监控会持续、无缝地进行,并且不会对服务器性能产生太大影响。启用性能Schema不会使服务器变得不可用。

  • 解析器保持不变。没有新的关键字或语句。

  • 服务器代码的执行将继续,即使性能Schema内部发生故障。

  • 在事件收集时,如果有选择,可以优先选择快速收集。因为收集是持续的,而检索是按需的可能永远不发生。

  • 大多数性能Schema表都有索引,这使得优化器可以访问其他执行计划,而不是全表扫描。更多信息,请见第10.2.4节,“优化性能Schema查询”

  • 添加新的instrumentation点非常容易。

  • instrumentation是版本化的。如果instrumentation实现发生变化,之前instrumented代码将继续工作。这对第三方插件开发者有益,因为不需要升级每个插件以同步与最新的性能Schema变化。

Note

MySQL sys schema是一个对象集,提供了对性能Schema收集数据的便捷访问。sys schema是默认安装的。使用说明,请见第30章,《MySQL sys Schema》