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