# 第 27 章 MySQL 性能模式

**目录**

[27.1 性能模式快速入门](performance-schema-quick-start.html)
[27.2 性能模式构建配置](performance-schema-build-configuration.html)
[27.3 性能模式启动配置](performance-schema-startup-configuration.html)
[27.4 性能模式运行时配置](performance-schema-runtime-configuration.html)
[27.4.1 性能模式事件时序](performance-schema-timing.html)
[27.4.2 性能模式事件过滤](performance-schema-filtering.html)
[27.4.3 事件预过滤](performance-schema-pre-filtering.html)
[27.4.4 仪器预过滤](performance-schema-instrument-filtering.html)
[27.4.5 按对象预过滤](performance-schema-object-filtering.html)
[27.4.6 线程预过滤](performance-schema-thread-filtering.html)
[27.4.7 消费者预过滤](performance-schema-consumer-filtering.html)
[27.4.8 示例消费者配置](performance-schema-consumer-configurations.html)
[27.4.9 过滤操作的命名工具或消费者](performance-schema-filtering-names.html)
[27.4.10 确定检测的内容](performance-schema-instrumentation-checking.html)
[27.5 性能模式查询](performance-schema-queries.html)
[27.6 性能模式仪器命名约定](performance-schema-instrument-naming.html)
[27.7 性能模式状态监控](performance-schema-status-monitoring.html)
[27.8 性能模式原子和分子事件](performance-schema-atom-molecule-events.html)
[27.9 当前和历史事件的性能模式表](performance-schema-event-tables.html)
[27.10 性能模式语句摘要和抽样](performance-schema-statement-digests.html)
[27.11 性能模式通用表特征](performance-schema-table-characteristics.html)
[27.12 性能模式表说明](performance-schema-table-descriptions.html)
[27.12.1 性能模式表参考](performance-schema-table-reference.html)
[27.12.2 性能模式设置表](performance-schema-setup-tables.html)
[27.12.3 性能模式实例表](performance-schema-instance-tables.html)
[27.12.4 性能模式等待事件表](performance-schema-wait-tables.html)
[27.12.5 性能模式阶段事件表](performance-schema-stage-tables.html)
[27.12.6 性能模式语句事件表](performance-schema-statement-tables.html)
[27.12.7 性能模式事务表](performance-schema-transaction-tables.html)
[27.12.8 性能模式连接表](performance-schema-connection-tables.html)
[27.12.9 性能模式连接属性表](performance-schema-connection-attribute-tables.html)
[27.12.10 性能模式用户定义的变量表](performance-schema-user-variable-tables.html)
[27.12.11 性能模式复制表](performance-schema-replication-tables.html)
[27.12.12 性能模式 NDB 集群表](performance-schema-ndb-cluster-tables.html)
[27.12.13 性能模式锁表](performance-schema-lock-tables.html)
[27.12.14 性能模式系统变量表](performance-schema-system-variable-tables.html)
[27.12.15 性能模式状态变量表](performance-schema-status-variable-tables.html)
[27.12.16 性能模式线程池表](performance-schema-thread-pool-tables.html)
[27.12.17 性能模式防火墙表](performance-schema-firewall-tables.html)
[27.12.18 性能模式密钥环表](performance-schema-keyring-tables.html)
[27.12.19 性能模式克隆表](performance-schema-clone-tables.html)
[27.12.20 性能模式汇总表](performance-schema-summary-tables.html)
[27.12.21 性能模式杂项表](performance-schema-miscellaneous-tables.html)
[27.13 性能模式选项和变量参考](performance-schema-option-variable-reference.html)
[27.14 性能模式命令选项](performance-schema-options.html)
[27.15 性能模式系统变量](performance-schema-system-variables.html)
[27.16 性能模式状态变量](performance-schema-status-variables.html)
[27.17 性能模式内存分配模型](performance-schema-memory-model.html)
[27.18 性能模式和插件](performance-schema-and-plugins.html)
[27.19 使用性能模式诊断问题](performance-schema-examples.html)
[27.19.1 使用性能模式进行查询分析](performance-schema-query-profiling.html)
[27.19.2 获取父事件信息](performance-schema-obtaining-parent-events.html)
[27.20 性能模式的限制](performance-schema-restrictions.html)

[](<>)[](<>)[](<>)[](<>)

MySQL Performance Schema 是一种用于在低级别监视 MySQL 服务器执行的功能。性能模式具有以下特征：

-   性能模式提供了一种在运行时检查服务器内部执行的方法。它是使用[`PERFORMANCE_SCHEMA`](performance-schema.html)存储引擎和`性能模式`数据库。性能模式主要关注性能数据。这不同于`INFORMATION_SCHEMA`，用于检查元数据。

-   性能模式监视服务器事件。“事件”是服务器所做的任何需要时间的事情，并且已经过检测，以便可以收集时间信息。通常，事件可以是函数调用、操作系统等待、SQL 语句执行的一个阶段（如解析或排序），或者整个语句或一组语句。事件收集提供对有关服务器和多个存储引擎的同步调用（例如互斥锁）文件和表 I/O、表锁等信息的访问。

-   性能模式事件不同于写入服务器二进制日志的事件（描述数据修改）和事件调度程序事件（一种存储程序）。

-   性能模式事件特定于 MySQL 服务器的给定实例。性能模式表被认为是服务器本地的，对它们的更改不会复制或写入二进制日志。

-   提供当前事件，以及事件历史和摘要。这使您能够确定执行了多少次检测活动以及它们花费了多少时间。事件信息可用于显示特定线程的活动，或与特定对象（如互斥锁或文件）关联的活动。

-   这[`PERFORMANCE_SCHEMA`](performance-schema.html)存储引擎使用服务器源代码中的“检测点”收集事件数据。

-   收集的事件存储在`性能模式`数据库。这些表可以使用查询[`选择`](select.html)像其他表一样的语句。

-   性能模式配置可以通过更新表来动态修改`性能模式`数据库通过 SQL 语句。配置更改会立即影响数据收集。

-   性能模式中的表是不使用持久磁盘存储的内存表。内容在服务器启动时重新填充，并在服务器关闭时丢弃。

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

    可能存在一些限制： 计时器的类型可能因平台而异。适用于存储引擎的工具可能不适用于所有存储引擎。每个第三方引擎的检测是引擎维护者的责任。也可以看看[第 27.20 节，“性能模式的限制”](performance-schema-restrictions.html).

-   数据收集是通过修改服务器源代码来添加检测来实现的。与复制或事件调度程序等其他功能不同，性能模式没有单独的线程。

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

-   激活性能模式不会导致服务器行为发生任何变化。比如不会导致线程调度发生变化，也不会导致查询执行计划（如图[`解释`](explain.html)） 改变。

-   服务器监控以非常少的开销持续且不显眼地进行。激活性能模式不会使服务器不可用。

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

-   即使 Performance Schema 内部失败，服务器代码的执行也会正常进行。

-   当在最初的事件收集期间或稍后的事件检索期间执行处理之间存在选择时，优先考虑使收集更快。这是因为收集正在进行中，而检索是按需进行的，并且可能永远不会发生。

-   大多数性能模式表都有索引，这使优化器可以访问除全表扫描之外的执行计划。有关详细信息，请参阅[第 8.2.4 节，“优化性能模式查询”](performance-schema-optimization.html).

-   添加新的检测点很容易。

-   仪表是版本化的。如果检测实现发生变化，之前检测的代码将继续工作。这有利于第三方插件的开发人员，因为没有必要升级每个插件以与最新的 Performance Schema 更改保持同步。

笔记

[](<>)MySQL的`系统`schema 是一组对象，可以方便地访问 Performance Schema 收集的数据。这`系统`默认情况下安装架构。有关使用说明，请参阅[第 28 章，*MySQL 系统架构*](sys-schema.html).
