第29章 MySQL 性能模式
目录
- 29.1 性能模式快速入门
- 29.2 性能模式构建配置
- 29.3 性能模式启动配置
- 29.4 性能模式运行时配置
- 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.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变化。
MySQL sys
schema是一个对象集,提供了对性能Schema收集数据的便捷访问。sys
schema是默认安装的。使用说明,请见第30章,《MySQL sys Schema》。