MySql 中文参考指南

Chapter 29 MySQL Performance Schema

目录

MySQL 性能模式是一项用于低级别监控 MySQL 服务器执行的功能。性能模式具有以下特性:

  1. 性能模式提供了一种在运行时检查服务器内部执行的方法。它是使用 PERFORMANCE_SCHEMA 存储引擎和 performance_schema 数据库实现的。性能模式主要关注性能数据。这不同于 INFORMATION_SCHEMA ,后者用于检查元数据。

  2. 性能架构监视服务器事件。“事件”是指服务器执行的任何耗时操作,并且经过检测,以便收集其时间信息。通常,事件可能是函数调用、等待操作系统、SQL 语句执行的阶段(例如解析或排序),或整个语句或一组语句。收集事件提供了有关服务器和几个存储引擎的同步调用(例如针对互斥锁)文件和表格 I/O、表格锁等的信息。

  3. 性能架构事件不同于写入服务器二进制日志的事件(用于描述数据修改)和事件调度程序事件(一种存储程序)。

  4. 性能架构事件特定于 MySQL Server 的给定实例。性能架构表格被认为是本地于服务器的,对它们的更改不会被复制或写入到二进制日志中。

  5. 我们可以获得当前事件、事件历史记录和汇总。这使得我们能够确定检测到的活动执行了多少次以及执行了多长时间。事件信息可用于显示特定线程的活动或与特定对象(例如互斥锁或文件)关联的活动。

  6. PERFORMANCE_SCHEMA 存储引擎使用服务器源代码中的“测量点”收集事件数据。

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

  8. 可以通过 SQL 语句更新 _performance_schema_数据库中的表格来动态地修改性能架构配置。配置更改会立即影响数据收集。

  9. 性能架构中的表格是内存表格,不使用持久的磁盘存储。服务器启动时开始重新填充表格内容,服务器关闭时丢弃内容。

  10. 所有受 MySQL 支持的平台都可以使用监控功能。

可能适用于某些限制:不同平台的计时器类型可能有所不同。适用于存储引擎的检测器可能并未针对所有存储引擎实现。第三方引擎的检测由引擎维护者负责。另请参见 Section 29.20, “Restrictions on Performance Schema”

  1. 通过修改服务器源代码来添加检测器来实现数据收集。与复制或事件调度程序等其他功能不同,性能架构没有关联的单独线程。

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

  1. 激活 Performance Schema 不会引起服务器行为发生任何变化。例如,它不会导致线程时间表发生变化,也不会导致查询执行计划(如 EXPLAIN 所示)发生变化。

  2. 服务器监控是持续而谨慎地进行的,开销很小。激活性能架构不会使服务器不可用。

  3. 解析器保持不变。没有任何新关键字或语句。

  4. 即使性能架构在内部发生故障,服务器代码的执行仍会正常进行。

  5. 当需要在事件收集期间还是在事件检索期间执行处理时,优先考虑使收集过程更快。这是因为收集是持续进行的,而检索是按需进行的,且可能根本不会发生。

  6. 大多数性能架构表格都有索引,这使优化器可以访问除全表格扫描之外的其他执行计划。有关更多信息,请参见 Section 10.2.4, “Optimizing Performance Schema Queries”

  7. 很容易添加新的检测点。

  8. 仪表已版本化。如果仪表实现发生更改,已安装的代码仍会继续工作。这有益于第三方插件的开发者,因为它不需要升级每个插件以使其与最新的 Performance Schema 更改同步。

MySQL sys 模式是一组对象,可以通过这些对象方便地访问 Performance Schema 收集的数据。sys 模式默认安装。有关使用方法的说明,请参阅 第 30 章,MySQL sys 模式