首页 > 数据库 >MySQL性能调优必知:Performance Schema引擎的配置与使用

MySQL性能调优必知:Performance Schema引擎的配置与使用

时间:2023-02-20 14:35:52浏览次数:55  
标签:NAME thread 必知 调优 MySQL performance NULL events schema

当你在MySQL高并发情况下的进行性能调优时,需要知道调整后的影响。例如查询是否变快了?锁是否会减慢运行速度?内存使用情况如何?磁盘IO等待时间变了吗?
.
Performance Schema就有一个 存储回答上述问题所需数据的数据库 。本篇文章将帮你了解Performance
Schema的工作原理、局限性,以及如何更好地使用它和sys Schema来搞清楚MySQL内部的运行细节。

目录

  • 1. Performance Schema介绍
  • * 1.1 插桩元件
    
    • 1.2 消费者表的分类
    • 1.3 资源消耗
    • 1.4 局限性
    • 1.5 sys Schema
    • 1.6 理解线程
  • 2 Performance Schema - 配置
  • * 2.1 启用与禁用-Performance Schema
    
    • 2.2 启用与禁用-插桩
    • 2.3 启用与禁用-消费者表
    • 2.4 优化特定对象的监控
    • 2.5 优化线程的监控
    • 2.6 调整Performance Schema的内存大小
    • 2.7 默认值
  • 3 Performance Schema - 使用
  • * 3.1 检查SQL语句
    
    •   * 常规SQL语句
      
      • 预处理语句
      • 存储过程
      • 语句剖析
    • 3.2 检查读写性能
    • 3.3 检查元数据锁
    • 3.4 检查内存使用情况
    •   * 直接使用performance schema
      
      • 使用sys schema
    • 3.5 检查变量
    • 3.6 检查最常见的错误
    • 3.7 检查Performance Schema自身
    • 小结

1. Performance Schema介绍

介绍Performance Schema的工作机制前,先解释两个概念:

  • 程序插桩(instrument): 指在MySQL代码中插入探测代码,以获取我们想了解的信息(也就是生产数据的代码,即所需数据的提供者、生产者)。就像一般的的链路监控框架,如 Google的Dapper 就是通过在代码中插入探测代码的方式获取信息。 (一般Java链路监控框架是通过代理的方式修改字节码文件, 在代码中间插入获取信息的代码。)
  • 消费者表(consumer): 指的是存储关于程序插桩代码信息的表。如果我们为查询模块添加插桩,相应的消费者表将记录如 执行总数、未使用索引次数、耗时 等信息。如图MySQL存在名为performance_schema的 内置数据库 ,里面有各种数据表存储了有关 MySQL内部运行的操作上的底层指标
    在这里插入图片描述 在这里插入图片描述

Performance Schema的一般功能如下图所示

在这里插入图片描述

在这里插入图片描述


当应用程序用户连接到MySQL并执行被测量的插桩指令时,performance_schema将每个检查的调用封装到两个宏中,然后将结果记录在相应的消费者表中。这里的要点是,
启用插桩会调用额外的代码,这意味着插桩会消耗CPU资源

1.1 插桩元件

在这里插桩元件可以理解为收集信息的组件(也就是 数据生产者
),是插入的“桩”与“桩的底座”的组合元件,每一个组件都代表着一些代码(收集信息

标签:NAME,thread,必知,调优,MySQL,performance,NULL,events,schema
From: https://www.cnblogs.com/xiaoxi-jinchen/p/17137240.html

相关文章

  • MySQL 创建数据库
    1.1进入MySQL命令:mysql-utest-p;1.2查看数据库命令:SHOWDATABASES;1.3新建数据库命令:CREATEDATABASEitem_name;1.4验证是否查看成功命令:SHOW......
  • 解决Mac下pip install mysqlclient 时的报错
    Django使用Mysql需要安装mysqlclient,在Mac下pipinstallmysqlclient时部分报错如下:Completeoutput(15lines):/bin/sh:mysql_config:commandnotfound/......
  • 00023.07 IP地址、端口号在代码中的使用(IntAdddress、各种数据库注册端口号Oracle(1521
    系列文章目录文章目录​​系列文章目录​​​​一、IP地址​​​​二、端口号​​​​三、IP地址、端口号代码当中的表示​​​​总结​​一、IP地址IP地址分为IPV4和IPV6......
  • Mysql基础
    sql分类DDL:数据定义语言create、alter、drop、rename、truncateDML:数据操作语言insert、delete、update、selectDCL:数据控制语言commit、rollback、savepoint、grant......
  • MYSQL悲观锁-用户余额
    无论什么锁JAVA的synchronized也好,还是MYSQL的锁都好,要注意分布式环境与单机环境1.乐观锁乐观认为并发不高,甚至没有并发。其中一种实现方式依靠在表中多加一个版本号字段......
  • Docker中Mysql容器忘记密码的处理方法
    今天非常的倒霉,因为学习了Vue的相关知识,想自己写一个后端服务器来练习一下Vue然后忘记了Docker中Mysql的密码。。。很抽象下面是我的解决方法一、如果在本地的Navica......
  • MySQL锁之深入死锁分析
    目录1死锁产生原因分析1.1产生原因1.2产生示例1.2.1案例一1.2.2案例二1.2.3案例三1.2.4案例四1.2.5案例五1.2.6案例六1.3死锁预防策略1.4剖析死锁的成因1.5解......
  • Mysql主从复制
    达到效果主数据库数据变更,从库对应同步变更(包含表、字段)前提条件两台数据库的数据要一致配置my.cnf主数据库配置#数据库服务器id,这个id用来在主从服务器中标记唯一......
  • 【Docker-3】Docker-Compose安装常用软件Nginx、Mysql、Redis、Java
    创建应用目录结构nginxconf.d-放置自定义的配置文件default.conflog-日志存储位置nginx.conf -nginx总配置文件docker-compose.ymlmysqlconf-放置自......
  • MYSQL重置密码
    以管理员身份打开命令行。停止MySQL服务(netstop服务名)。切换到MySQL的bin文件下,输入mysqld--console--skip-grant-tables--shared-memory。上个窗口保留不要关......