2023年12月7日发(作者:)

漫谈MySQL四-系统数据库performance_schema详解

目录

1.系统数据库的简介

以下系统库的介绍,主要是扩展大家的知识面,因为系统库中的数据很重要, 没有对 MySQL 有全面通盘的了解,不宜去操作其下

的数据,而且对系统库的管理维护是是 DBA 的职责。

MySQL 有几个系统数据库,这几个数据库包含了 MySQL 服务器运行过程中所需的一些信息以及一些运行状态信息,我们现在稍微了解

一下。

performance_schema

这个数据库里主要保存 MySQL 服务器运行过程中的一些状态信息,算是对

MySQL 服务器的一个性能监控。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等等信息。

sys

这个数据库主要是通过视图的形式把 information_schema 和performance_schema 结合起来,让程序员可以更方便的了解 MySQL

服务器的一些性能信息。

information_schema

这个数据库保存着 MySQL 服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息

并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。

mysql

这个数据库核心,它存储了 MySQL 的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮

助信息以及时区信息等。

mance_schema详解

2.1. 什么是performance_schema?

MySQL 的performance_schema 是运行在较低级别的用于监控MySQL Server运行过程中的资源消耗、资源等待等情况的一个功能特

性,它具有以下特点。

performance_schema 提供了一种在数据库运行时实时检查Server 内部执行情况的方法。performance_schema 数据库中的表使

用 performance_schema 存储引擎。该数据库主要关注数据库运行过程中的性能相关数据。

performance_schema 通过监视Server 的事件来实现监视其内部执行情况,“事件”就是在 Server 内部活动中所做的任何事情以

及对应的时间消耗,利用这些信息来判断 Server 中的相关资源被消耗在哪里。一般来说,事件可以是函数调用、操作系统的等待、

SQL 语句执行的阶段[如 SQL 语句执行过程中的 parsing(解析)或 sorting(排序)阶段]或者整个 SQL 语句的集合。采集事件可

以方便地提供 Server 中的相关存储引擎对磁盘文件、表 I/O、表锁等资源的同步调用信息。

当前活跃事件、历史事件和事件摘要相关表中记录的信息,能提供某个事件的执行次数、使用时长,进而可用于分析与某个特定线程、

特定对象(如mutex 或 file)相关联的活动。

performance_schema 存储引擎使用 Server 源代码中的“检测点”来实现事件数据的收集。对于 performance_schema 实现机制

本身的代码没有相关的单独线程来检测,这与其他功能(如复制或事件计划程序)不同。收集到的事件数据被存储在

performance_schema 数据库的表中。对于这些表可以使用 SELECT 语句查询,也可以使用 SQL 语句更新

performance_schema 数据库中的表记录(比如动态修改 performance_schema 的以“setup_”开头的配置表,但要注意,配置

表的更改会立即生效,这会影响数据收集)。

performance_schema 的表中数据不会持久化存储在磁盘中,而是保存在内存中,一旦服务器重启,这些数据就会丢失(包括配置表

在内的整个performance_schema 下的所有数据)。2.2 performance_schema 使用

过上面介绍,相信你对于什么是 performance_schema 这个问题了解得更清晰了。下面开始介绍 performance_schema 的使用。

2.2.1 检查当前数据库版本是否支持

performance_schema 被视为存储引擎,如果该引擎可用,则应该在 INFORMATION_S 表或 show engines 语句的

输出中可以看到它的 Support 字段值为 YES,如下所示。

当我们看到 performance_schema 对应的 Support 字段值为 YES 时,就表示当前的数据库版本是支持 performance_schema 的。但

确认了数据库实例支持performance_schema 存储引擎就可以使用了吗?NO,很遗憾,performance_schema 在 MySQL 5.6 及之前

的版本中默认没有启用,在 MySQL 5.7及之后的版本中才修改为默认启用。

1

2

3

启用performance_schema

如果要显式启用或关闭performance_schema,则需要使用参数