Performance_schema 概述

Posted by 道行尚浅 on August 1, 2021

perform_schema的作用

perform_schema 是一个可以提供底层MySQL SERVER监控的特性. Performance 有以下特点:

提供一条监控server内部执行的路径.使用 PERFORMANCE_SCHEMA 存储引擎与perform_schema 数据库. Performance Schema 聚焦于性能数据,与INFORMATION_SCHEMA不同,INFORMATION_SCHEMA聚焦于元数据.

Performance Schema 监控服务器事件,事件是指在服务器上花费时间的任意动作.通常一个时间可以是一次函数调用,或者SQL 语句的执行阶段(如SQL 解析与 语句分组). 事件也收集了同步调用(如 mutex) 文件或者表的IO、表锁。

Performance Schema的事件与写入binlog的事件以及调度事件都不是一个概念。

Performance Schema的事件特指一个服务实例,只作用于当前服务器,这些数据并不会同步至从库。

同时提供当前事件、事件历史与事件汇总。这样你可以计算有多少事件发生并且这些事件花费多少时间。事件信息可用于特定线程或特定对象的信息。

收集到的事件信息存储在performance_schema 数据库。这些表可以通过select 语句进行查询。

可以通过update语句动态修改监控选项,且修改后立即生效。

Performance Schema中的表存储与内存中,并不会进行持久化存储。表中内容在服务器启动时生成,在服务器关闭时停止。

可以监控所有平台的MySQL服务。

可能的限制为:计时器随平台变化。存储引擎检测器未必会适用于所有引擎。第三方引擎的监测需要由引擎维护者负责。

数据的收集通过修改服务器源码的方式实现。并没有单独的线程专用于Performance Schema,不像复制插件与调度事件插件。


 Performance Schema 致力于在最小性能开销的前提下提供服务器运行的有用信息.
 设计目标包含如下内容:

即使持续性的监控带来的性能损耗也是非常小的 启用Performance_schema也不会使服务不可用.

解析器没有变化.没有带来新的关键字或语句.

即使Performance_schema内部代码出现异常,服务代码也会正常执行.

在事件收集与事件检索期间,当前选择事件收集,原因为:收集在持续发生,而检索未必发生.

非常容易添加监测点.

监测器受版本控制.如果检测器的实现方式发生了改变,上一个版本的检测器仍旧可以使用.有益于第三方插件的开发者,因为没有必要去升级所有插件以保持与最新Performance Schema变更的同步.