当前位置: 首页 > article >正文

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

请在此添加图片描述

什么是 performance_schema

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

performance_schema 的独特之处

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

SELECT * FROM performance_schema.threads;

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

请在此添加图片描述

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

SELECT * FROM performance_schema.events_statements_current; 

请在此添加图片描述

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

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

事件摘要和分析: 它还提供了事件的历史记录和摘要数据,能够详细分析特定线程或资源(如互斥锁或文件)的活动情况,帮助快速识别出性能瓶颈。 想查看历史事件的摘要吗?用这条 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 数据库中的表,就能监控服务器的性能了。

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

SELECT * FROM performance_schema.threads;

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

SELECT * FROM performance_schema.events_statements_current;

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

performance_schema 的表及其作用

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

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

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

总结

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


http://www.kler.cn/a/315336.html

相关文章:

  • C语言打印时间精确到毫秒
  • 【mysql的当前读和快照读】
  • Ps:OpenColorIO 设置
  • 高级java每日一道面试题-2024年11月06日-JVM篇-什么是 Class 文件? Class 文件主要的信息结构有哪些?
  • idea 弹窗 delete remote branch origin/develop-deploy
  • AWS认证SAA-C0303每日一题
  • 基于深度学习的因果关系建模
  • [论文笔记]MRRNET
  • 树和二叉树的概念以及结构
  • 关于IT行业
  • 智慧火灾应急救援航拍检测数据集(无人机视角)
  • 【编程底层原理】Java对象头的详细结构、锁机制及其优化技术,以及逃逸分析和JIT技术在性能优化中的作用
  • 无损转换:严选4个视频mkv转mp4格式的方法
  • Python青少年简明教程目录
  • MySQL 数据库备份与恢复详解
  • 1042 Shuffling Machine,1050 String Subtractio
  • uniapp自定义Tabbar教程
  • pg入门18—如何使用pg gis
  • 大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
  • 绑定变量对于SQL性能的影响
  • Python练习宝典:Day 1 - 选择题 - 基础知识
  • Go搭建TcpSocket服务器
  • 华润电力最新校招社招润择认知能力测评:逻辑推理数字计算语言理解高分攻略
  • K8s容器运行时,移除Dockershim后存在哪些疑惑?
  • 神经网络面试题目
  • 【AI视频】复刻抖音爆款AI数字人作品初体验