目录
MySQL Performance Schema 是一种用于在低级别监视 MySQL 服务器执行的功能。性能模式具有以下特征:
性能模式提供了一种在运行时检查服务器内部执行的方法。它是使用
PERFORMANCE_SCHEMA
存储引擎和performance_schema
数据库实现的。性能模式主要关注性能数据。这不同于INFORMATION_SCHEMA
,后者用于检查元数据。性能模式监控服务器事件。“事件”是服务器所做的任何需要时间的 事情,并且已经过检测以便可以收集时间信息。通常,事件可以是函数调用、等待操作系统、SQL 语句执行的一个阶段(例如解析或排序),或者整个语句或一组语句。事件收集提供对有关服务器和多个存储引擎的同步调用(例如互斥锁)文件和表 I/O、表锁等信息的访问。
Performance Schema 事件不同于写入服务器二进制日志的事件(描述数据修改)和 Event Scheduler 事件(一种存储程序)。
性能模式事件特定于 MySQL 服务器的给定实例。Performance Schema 表被认为是服务器本地的,对它们的更改不会被复制或写入二进制日志。
提供当前事件以及事件历史和摘要。这使您能够确定检测活动执行了多少次以及它们花费了多少时间。事件信息可用于显示特定线程的活动,或与特定对象(如互斥体或文件)关联的活动。
存储引擎使用服务器源代码中的 “检测点”
PERFORMANCE_SCHEMA
收集事件数据。收集的事件存储在
performance_schema
数据库的表中。可以SELECT
像其他表一样使用语句查询这些表。performance_schema
可以通过 SQL 语句 更新数据库中的表来动态修改 Performance Schema 配置。配置更改会立即影响数据收集。Performance Schema 中的表是内存表,不使用持久的磁盘存储。内容在服务器启动时重新填充,并在服务器关闭时丢弃。
在 MySQL 支持的所有平台上都可以进行监控。
一些限制可能适用:定时器的类型可能因平台而异。适用于存储引擎的工具可能不会为所有存储引擎实现。每个第三方引擎的检测是引擎维护者的责任。另见 第 22.19 节,“对性能模式的限制”。
数据收集是通过修改服务器源代码以添加检测来实现的。与复制或事件调度程序等其他功能不同,没有与性能模式关联的单独线程。
性能模式旨在提供对有关服务器执行的有用信息的访问,同时对服务器性能的影响最小。实施遵循以下设计目标:
激活性能模式不会导致服务器行为发生变化。例如,它不会导致线程调度发生变化,也不会导致查询执行计划(如 所示
EXPLAIN
)发生变化。除了在服务器启动期间发生的内存分配外,不会进行任何内存分配。通过使用固定大小的早期结构分配,永远不需要调整大小或重新分配它们,这对于实现良好的运行时性能至关重要。
服务器监控持续且不引人注意地发生,开销非常小。激活性能模式不会使服务器不可用。
解析器没有改变。没有新的关键字或语句。
即使性能模式在内部失败,服务器代码的执行也会正常进行。
当在最初的事件收集期间或稍后的事件检索期间执行处理之间进行选择时,优先考虑使收集更快。这是因为收集是持续进行的,而检索是按需进行的,可能永远不会发生。
添加新的检测点很容易。
仪器是版本化的。如果检测实现发生变化,以前检测过的代码应该继续工作。这有利于第三方插件的开发人员,因为无需升级每个插件即可与最新的 Performance Schema 更改保持同步。
MySQLsys
模式是一组对象,可以方便地访问性能模式收集的数据。在 MySQL 5.7 中,sys
模式是默认安装的。对于 MySQL 5.6,您可以从https://github.com/mysql/mysql-sys的模式开发网站获取它
。有关使用说明,请参阅MySQL 系统模式。