初识 performance_schema:轻松掌握MySQL性能监控

什么是 performance_schema

performance_schema 是 MySQL 5.8 版本的一个强大功能,它就像是一个内置的**"性能侦探"**,专门用来监控和分析 MySQL 服务器的资源消耗和等待情况。有了它,数据库管理员和开发者就能实时了解服务器的运行状态,从而更好地进行性能调优。

performance_schema 的独特之处

实时监控数据库内部活动: performance_schema 能够实时看到 MySQL 服务器的内部活动情况。不同于 information_schema 主要提供的元数据信息,performance_schema 更侧重于收集和分析与性能相关的运行数据。 想看看当前服务器上有哪些活跃的线程吗?简单一条命令就行:

sql 复制代码
SELECT * FROM performance_schema.threads;

这将让我们一目了然地看到所有活跃线程的信息,帮助监控线程的执行情况。

**事件监控机制:**它通过监视服务器内的各种事件,比如函数调用、SQL 语句的解析和排序过程,甚至是操作系统的等待时间,来了解资源的消耗情况。这样,就能清楚地知道 MySQL 是如何在处理任务时消耗资源的。 想要查看当前执行的 SQL 语句及其资源消耗吗?试试这个查询:

sql 复制代码
SELECT * FROM performance_schema.events_statements_current; 

这将列出正在执行的 SQL 语句,以及它们的执行时间和资源消耗情况。

**本地事件记录:**performance_schema 中的事件数据只记录在本地服务器上,不会写入到 binlog 中,也不会通过主从复制传到其他服务器。这意味着这些数据仅供本地分析使用,保证了数据的安全性和私密性。

事件摘要和分析: 它还提供了事件的历史记录和摘要数据,能够详细分析特定线程或资源(如互斥锁或文件)的活动情况,帮助快速识别出性能瓶颈。 想查看历史事件的摘要吗?用这条 SQL 语句:

sql 复制代码
SELECT * FROM performance_schema.events_statements_history;

轻量级性能监控: 启用 performance_schema 并不会对服务器的性能造成太大影响。它通过服务器内部的"检测点"来收集事件数据,不需要额外的线程或任务,大大降低了开销。

数据存储在内存中: performance_schema 采集的数据都存储在内存里,一旦服务器重启,这些数据就会丢失。所以,它更适合用来做实时的性能分析,而不是用来长期保存数据。

跨平台支持: MySQL 5.8 在所有平台上都支持事件监控功能,不过不同平台上的计时器类型可能会有所不同。这就意味着,在各个平台上度量时间开销的方式可能会有所差异。

设计目标

performance_schema 的设计目标是:

  • 不改变服务器的正常行为,即使开启了 performance_schema,也不会影响 MySQL Server 的正常运行。
  • 尽量减少对服务器性能的影响,让性能监控的开销尽可能小,适合长时间持续启用。
  • 即使 performance_schema 在采集数据时出现问题,也不会影响到服务器的正常运行。

快速上手 performance_schema

在 MySQL 5.8 中,performance_schema 默认是已经启用的。只需要查询 performance_schema 数据库中的表,就能监控服务器的性能了。

比如,想查询当前活跃的线程,可以用:

sql 复制代码
SELECT * FROM performance_schema.threads;

或者,想查看当前 SQL 语句的执行事件,可以用:

sql 复制代码
SELECT * FROM performance_schema.events_statements_current;

这些简单的查询就能帮助快速了解 MySQL 服务器的当前运行状态,而且完全不需要特殊的配置。

performance_schema 的表及其作用

performance_schema 数据库里的表主要分成几类:

  • setup 表:这些表用来配置和调整监控选项。可以通过修改这些表来启用或禁用特定的监控项目,比如 SQL 语句的监控或等待事件的监控。 比如,如果想启用对 SQL 语句的监控,可以这样修改 setup_instruments 表:
sql 复制代码
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME = 'statement/sql/%';
  • events_表**:**这些表记录了不同类别的事件数据,包括 SQL 语句的执行、等待事件和文件操作等等。 如果想查看当前的等待事件,可以这样查询:
sql 复制代码
SELECT * FROM performance_schema.events_waits_current;
  • summary 表:这些表提供了事件的统计信息和摘要数据,帮助分析资源的使用情况。比如,可以查看某个资源的使用频率和总耗时。 想要查看 SQL 语句的执行摘要吗?可以这样查询:
sql 复制代码
SELECT * FROM performance_schema.events_statements_summary_by_digest;

通过这些表,performance_schema 为开发者提供了一个全面的 MySQL 性能监控工具箱,让能够轻松地定位性能瓶颈,并进行有效的优化。

总结

在 MySQL 5.8 中引入的 performance_schema 功能,为我们提供了一个强大的性能监控工具。通过监控 MySQL 内部的各种事件,我们可以实时掌握资源的消耗情况和执行状态,从而更有效地优化数据库性能。

相关推荐
Whyn几秒前
MySQL 学习笔记(二)
mysql
新中地GIS开发老师6 分钟前
地信职业百科④:GIS开发工程师
前端·数据库·gis·webgis·三维gis开发
云和恩墨14 分钟前
从“第二存储”到多智能体协作,云和恩墨充实数据基础设施产品矩阵
数据库
ClouGence21 分钟前
SAP HANA 到 Doris 数据迁移:4 种方案对比与迁移教程
数据库·后端·dba
霸道流氓气质22 分钟前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
我不想名字重复25 分钟前
redis缓存和数据库数据保持一致
数据库·redis·缓存
宇宙第一小趴菜1 小时前
三、Oracle 核心原理
数据库·oracle
码出钞能力2 小时前
apache-shardingsphere-5.5.3自定义分片算法
数据库
兜有米啦2 小时前
数据库第二次作业
数据库
nVisual3 小时前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理