performance_schema 初相识 配置详解 应用

news2024/11/26 12:49:30

千金良方:MySQL性能优化金字塔法则

第4章 performance_schema初相识
第5章 performance_schema配置详解
第6章 performance_schema应用示例荟萃

简介

1、实时监控Server性能监控和诊断的工具
2、它提供了丰富的性能指标和事件,可以帮助你深入了解 MySQL 的性能状况
3、通过 performance_schema,你可以监视数据库的查询、锁定、IO 等方面的性能数据,并进行性能优化和瓶颈排查
4、只记录本地,不会同步到备库
5、数据保存在内存,重启丢失

常见表介绍

表名描述
accounts存储MySQL帐户信息和密码哈希值的表
cond_instances存储条件对象实例的表
events_waits_current提供当前等待事件的信息
events_waits_history提供历史等待事件的信息
events_waits_history_long提供长期历史等待事件的信息
events_waits_summary_by_instance提供按实例汇总的等待事件信息
events_waits_summary_by_thread提供按线程汇总的等待事件信息
events_stages_current提供当前阶段事件的信息
events_stages_history提供历史阶段事件的信息
events_stages_history_long提供长期历史阶段事件的信息
events_stages_summary_by_host_by_event_name提供按主机和事件名称汇总的阶段事件信息
events_stages_summary_by_host_by_event_name提供按主机和事件名称汇总的阶段事件信息
events_statements_current提供当前语句事件的信息
events_statements_history提供历史语句事件的信息
events_statements_history_long提供长期历史语句事件的信息
events_statements_summary_by_account_by_event_name提供按帐户和事件名称汇总的语句事件信息
events_statements_summary_by_host_by_event_name提供按主机和事件名称汇总的语句事件信息
events_statements_summary_by_thread_by_event_name提供按线程和事件名称汇总的语句事件信息
events_statements_summary_by_user_by_event_name提供按用户和事件名称汇总的语句事件信息
events_transactions_current提供当前事务事件的信息
events_transactions_history提供历史事务事件的信息
events_transactions_history_long提供长期历史事务事件的信息
events_transactions_summary_by_host_by_event_name提供按主机和事件名称汇总的事务事件信息
events_transactions_summary_by_thread_by_event_name提供按线程和事件名称汇总的事务事件信息
events_transactions_summary_by_user_by_event_name提供按用户和事件名称汇总的事务事件信息
events_waits_summary_global_by_event_name提供按事件名称全局汇总的等待事件信息
file_instances存储文件实例的表
file_summary_by_event_name提供按事件名称汇总的文件摘要信息
file_summary_by_instance提供按实例汇总的文件摘要信息
hosts存储已连接到MySQL服务器的主机信息
mutex_instances存储互斥锁实例的表
performance_timers存储性能计时器的信息
rwlock_instances存储读写锁实例的表
session_connect_attrs

储会话连接属性的表 |
| setup_consumers | 存储事件消费者信息的表 |
| setup_instruments | 存储事件仪表信息的表 |
| setup_timers | 存储计时器信息的表 |
| threads | 存储线程信息的表 |
| users | 存储MySQL用户信息的表 |

以上是MySQL 8中performance_schema表的一些常见表和它们的作用。performance_schema表提供了关于MySQL服务器性能、资源利用和各种事件的详细信息。通过查询这些表,您可以获得关于MySQL服务器运行状态的有用统计信息,以便进行性能分析和调优。

配置详解

1、介绍编译时的配置选项,只对源码编译安装适用

2、详细介绍启动时配置,即在启动之前如何通过配置文件来持久化performance_schema的配置,主要介绍performance_schema的system variables(系统变量)、status variables(状态变量)和启动选项

show variables like '%performance_schema%';

在这里插入图片描述

3、详细介绍运行时配置,即在运行过程中如何动态配置performance_schema,主要介绍如何通过performance_schema中的配置表进行动态配置,以及这些配置表的字段含义、配置表中的配置项之间有什么关联等。

应用

利用等待事件排查MySQL性能问题

events_waits_current

使用 events_waits_current 视图可以查看当前正在等待的事件。这个视图提供了关于当前等待事件的详细信息,包括等待事件的类型、持续时间、等待线程的状态等。

以下是使用 events_waits_current 视图的一般步骤:

  1. 确保 performance_schema 已经启用:

    • 在 MySQL 的配置文件中,检查 performance_schema 是否被设置为 ON。如果没有设置,需要修改配置文件并重启 MySQL。
  2. 查询 events_waits_current 视图:

    • 使用 SELECT 语句查询 events_waits_current 视图,可以获取当前正在等待的事件信息。
    • 例如,可以执行以下查询来获取当前等待事件的信息:
      SELECT * FROM performance_schema.events_waits_current;
      
  3. 分析等待事件:

    • 分析查询结果,查看不同等待事件的类型和持续时间。
    • 根据事件类型和持续时间,判断是否存在性能瓶颈,并确定需要采取的优化措施。
  4. 结合其他视图和表进行进一步分析:

    • 可以结合其他的 performance_schema 视图和表,如 events_statements_summary_by_digestevents_statements_current 等,来获取更全面的性能数据和查询执行信息。

请注意,events_waits_current 视图只提供了当前正在等待的事件信息,如果需要查看历史等待事件,可以使用 events_waits_history 视图。

使用 events_waits_current 视图可以实时监控当前等待事件,对于实时性能问题的排查和分析很有帮助。结合其他性能监控工具和技术,可以更全面地了解 MySQL 的性能状况,并进行相应的优化和调整。

events_waits_summary_global_by_event_nameevents_waits_history_long

使用 performance_schema 可以利用等待事件来排查 MySQL 的性能问题。等待事件是指在执行过程中,MySQL 进程因等待某种资源而暂时挂起的情况。通过分析等待事件,可以找出导致性能瓶颈的原因,并进行相应的优化。

下面是使用 performance_schema 排查 MySQL 性能问题的一般步骤:

  1. 确保 performance_schema 已经启用:

    • 在 MySQL 的配置文件中,检查 performance_schema 是否被设置为 ON。如果没有设置,需要修改配置文件并重启 MySQL。
  2. 查询等待事件:

    • 使用 performance_schema 提供的视图和表来查询等待事件。常用的视图包括 events_waits_summary_global_by_event_nameevents_waits_history_long
    • 例如,可以执行以下查询来获取全局等待事件的摘要信息:
      SELECT * FROM performance_schema.events_waits_summary_global_by_event_name;
      
  3. 分析等待事件:

    • 分析查询结果,查看哪些等待事件的计数较高,表示这些事件可能是性能瓶颈的原因。
    • 根据不同的等待事件,采取相应的优化措施。例如,如果发现等待事件是与磁盘IO相关的,可能需要优化磁盘性能或优化查询的索引。
  4. 进一步细化分析:

    • 使用 performance_schema 提供的更详细的视图和表,进一步细化分析性能问题。例如,events_statements_summary_by_digest 表提供了查询摘要的性能数据,可以根据查询的执行时间、扫描行数等指标进行优化。
  5. 监控和持续优化:

    • 定期监控 performance_schema 的数据,并与系统负载和性能指标进行对比。根据数据的变化,进一步优化数据库的配置和查询语句,以达到更好的性能。

使用 performance_schema 来排查性能问题需要对 MySQL 的内部工作原理和各个等待事件有一定的了解。可以参考 MySQL 官方文档中关于 performance_schema 的详细说明,以及一些性能优化的经验和案例来指导实际操作。

锁问题排查

1、全局读锁
2、MDL锁
3、表级锁
4、行级锁

从MySQL 5.7版本开始提供了performance_schema.metadata_locks表,该表记录了各种Server层的锁信息(包括全局读锁和MDL锁等信息)

information_schema下的三个关于InnoDB引擎的锁和事务信息表(INNODB_LOCK_WAITS、INNODB_LOCKS、INNODB_TRX)

performance_schema.table_handles表

performance_schema.events_statements_current表

sys.innodb_lock_waits视图

查看最近的SQL语句执行信息

查看SQL语句执行阶段和进度信息

查看最近的事务执行信息

查看多线程复制报错详情

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年6月PMP®项目管理认证招生简章

PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP认证定为项目经理人必须取得的重要资质。 【PMP认证收益】 1、能力的提升(领导力,执行力,创新能力&#xff0c…

python 编译安装指定版本 for linux

python环境是linux中必备的,部分发行版会自带python,有时候需要安装手动安装 注意:如果需要多个版本并存,建议使用conda环境,如果自己配置多版本,需要用多个软链接 conda环境,可以参考&#x…

【CSS Zoro 01】说在前面 CSS概念 CSS语法 CSS选择器 元素 id 类 组合 通用 分组 属性 后代 子元素 相邻兄弟

CSS 说在前面概念语法 syntaxCSS选择器 说在前面 最近挺喜欢看One Piece的,并且发现前端三剑客如果对应上Sanji,Zoro和Luffy的话会很有趣,所以说非常想在博客里面对应上小彩蛋,即使会损失一些SEO,但是这样做对我来说很…

算法修炼之筑基篇——筑基一层(解决01背包问题)

✨博主:命运之光 ✨专栏:算法修炼之练气篇​​​​​ ✨博主的其他文章:点击进入博主的主页 前言:学习了算法修炼之练气篇想必各位蒟蒻们的基础已经非常的扎实了,下来我们进阶到算法修炼之筑基篇的学习。筑基期和练气期…

raise AssertionError(“Torch not compiled with CUDA enabled“)

1、运行代码可知,当前cuda不可用。 import torch print(torch.cuda.is_available()) # False 2、打开power shell or cmd,输入nvidia-smi命令,检查当前英伟达显卡信息。 可知当前驱动版本512.78,支持的cuda最高版本为11.6&…

时间序列教程 六、深度学习与时间序列分析结合

一、深度学习方法 与传统的时间序列预测模型相比,神经网络有以下几个好处: 1、自动学习如何将趋势、季节性和自相关等系列特征纳入预测。 2、能够捕捉非常复杂的模式。 3、可以同时建模许多相关的系列,而不是单独处理每个系列。 但是神经网络有一些劣势: 1、模型的构建可能…

PyCharm开发工具的安装与使用

PyCharm集成开发工具(IDE),是当下全球python开发者,使用最频繁的工具软件。绝大多数的python程序,都是在PyCharm工具内完成的开发。 1.先进行下载并安装它 下载官网地址:https://www.jetbrains.com/pycharm/download/#sectionwindows 宝子…

SpringBoot自定义拦截器实现权限过滤功能(基于责任链模式)

前段时间写过一篇关于自定义拦截器实现权限过滤的文章,当时是用了自定义mybatis拦截器实现的:SpringBoot自定义Mybatis拦截器实现扩展功能(比如数据权限控制)。最近学习设计模式发现可以用责任链模式实现权限过滤,因此本篇采用责任链模式设计…

Docker(概述、安装、配置、镜像操作)

一、docker是什么? docker是一种go语言开发的应用容器引擎,运行容器里的应用。docker是用来管理容器和镜像的一种工具。 容器引擎:docker、rocket、podman、containerd 容器与虚拟机的区别 容器:所有容器共享宿主机内核。使用…

【手撕Spring源码】AOP

文章目录 AOP 实现之 ajc 编译器AOP 实现之 agent 类加载AOP 实现之 proxyJDK代理CGLIB代理JDK动态代理进阶CGLIB代理进阶MethodProxy JDK 和 CGLIB 在 Spring 中的统一切点匹配从 Aspect 到 Advisor通知转换调用链执行静态通知调用动态通知调用 AOP 底层实现方式之一是代理&am…

Java/Compose Desktop项目中进行python调用

写在前面 开发compose desktop项目爬网站时遇到验证码处理不方便需要借助python庞大的处理能力,这时需要再项目中调用python去执行获取结果,这里记录一下使用过程。 本次开发记录基于:python 3.9,compose 1.3 java17 工具&#x…

2年测试我迷茫了,软件测试大佬都会哪些技能?我的测试进阶之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

【MCS-51单片机汇编语言】期末复习总结④——求定时器初值(题型四)

文章目录 重要公式T~机器~ 12 / ∫~晶振~(2^n^ - X) * T~机器~ T~定时~ 工作方式寄存器TMOD常考题型例题1题解方式0方式1 关于定时器的常考题目为已知晶振 ∫ 、定时时间,求定时器初值。 重要公式 T机器 12 / ∫晶振 (2n - X) * T机器 T定时 其中n为定时器位数…

线性代数2:矩阵(1)

目录 矩阵: 矩阵的定义: 0矩阵 方阵 同型矩阵: 矩阵相等的判定条件 矩阵的三则运算: 乘法的适用条件 矩阵与常数的乘法: 矩阵的乘法: 矩阵的乘法法则: Note1: Note2&…

【数据库】表数据delete了,表文件大小不变

背景 在本周的时候,接到了短信数据空间报警短信,提示的是磁盘空间占用80以上,而这个数据库总体的存储量一共100G,商量之后决定在不升配置的前提下,删除一些不需要的数据表。比如针对A表删除1000W数据。但是和DBA沟通后…

FAST-LIO2论文阅读

目录 迭代扩展卡尔曼滤波增量式kd-tree(ikd-tree)增量式维护示意图ikd-tree基本结构与构建ikd-tree的增量更新(Incremental Updates)逐点插入与地图下采样使用lazy labels的盒式删除属性更新 ikd-tree重平衡平衡准则重建及并行重建…

SMTP简单邮件传输协议(C/C++ 发送电子邮件)

SMTP是用于通过Internet发送电子邮件的协议。电子邮件客户端(如Microsoft Outlook或macOS Mail应用程序)使用SMTP连接到邮件服务器并发送电子邮件。邮件服务器还使用SMTP将邮件从一个邮件服务器交换到另一个。它不用于从服务器下载电子邮件;相…

jmeter安装及使用

jmeter安装及使用 一、说明二、安装2.1 目录结构 三、使用3.1 运行jmeter3.2 设置语言3.3 设置线程组3.3.1 设置压测请求3.3.2 设置汇总报告3.3.3 设置结果树 3.4 开始压测 四、导出执行报告4.1 保存配置4.2 执行命令4.3 生成报告常见问题 一、说明 最近需要对项目接口进行压测…

vue简单实现一个类似微信左右滑动更多功能

1、需求背景 产品需要在购物车加一个左右滑动更多的功能,由于是PC端,大致扫描了下使用的UI库,貌似没有单独提供此类组件,反正有时间,就自己造一个轮子试试 2、先看效果 大致有一个橡皮筋的效果,可能没那…

分布式锁方案学习

很久没有写文章了,前些天的面试被问到了分布式锁的解决方案,回答的比较简单,只知道Redis,Mysql,Zookeeper能够作为分布式锁应用,今天就来详细的学习一下这三种分布式锁的设计思想及原理。 能够来看这篇文章…