MySQL(一)MySQL结构介绍,性能监控:show profile,Performance Schema,show processlist

本文介绍了MySQL的结构,包括客户端、连接器、分析器、优化器和执行器的角色。重点讨论了性能监控,如`show profile`的使用,提醒该命令将被弃用,建议使用Performance Schema。Performance Schema提供了更全面的监控能力,而`show processlist`则用于查看数据库的连接状态。此外,还提到了连接池的概念,特别是Druid连接池的监控功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构

  • 客户端 : 发送连接请求,SQL请求
  • MySQL-server:
    1. 连接器: 提供连接服务,权限认证
    2. 分析器: 把SQL语句切分,语法分析,词法分析,转换成AST(抽象语法树)
    3. 优化器: 优化SQL语句,规定执行流程
      两种优化方式,RBO(基于规则的优化)和CBO(基于成本的优化),更多的使用CBO
      可以查看SQL语句的执行计划,采用对应的优化点,加快查询
    4. 执行器: SQL语句的实际执行组件,和存储引擎挂钩,查询数据
    5. MySQL8之前还有一层缓存,8之后去掉了;因为数据经常变化,命中率不高
  • 存储引擎(有不同的存放位置和文件格式)
    InnoDB 磁盘
    MyISAM 磁盘
    memory 内存

性能监控

show profile

官网SQL Statement下面
https://dev.mysql.com/doc/refman/5.7/en/
https://dev.mysql.com/doc/refman/5.7/en/show-profile.html

可以帮助我们分析SQL的执行情况
进入MySQL客户端后,输入命令: set profiling=1; 开启

然后执行SQL后,就可以通过show profiles; 查看了

  1. show profiles; 简单的查看一个列表,会带着QueryId
  2. show profile; 查看最近一条SQL的各个步骤的详情
  3. show profile [type] for query queryId; 查看某条SQL的各个步骤的详情,可以指定type

在这里插入图片描述

The SHOW PROFILE and SHOW PROFILES statements are deprecated and will be removed in a future MySQL release. Use the Performance Schema instead; see Section 25.19.1, “Query Profiling Using Performance Schema”.
现在版本还能继续用,将来版本很可能会被删除的;用Performance Schema替代

Performance Schema

https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html
默认开启,通过show databases; 就可以看到performance_schema库,数据不会持久化

它比show profiles功能强大很多,但使用起来也复杂很多;一般我们作为开发人员,show profiles就够了…

performance_schema 数据库中的表使用performance_schema存储引擎

两个基本概念:

  • instruments: 生产者,用于采集mysql中各种各样的操作产生的事件信息,对应配置表中的配置项我们可以称为监控采集配置项。
  • consumers:消费者,对应的消费者表用于存储来自instruments采集的数据,对应配置表中的配置项我们可以称为消费存储配置项。

简单配置与使用

数据库刚刚初始化并启动时,并非所有instruments(事件采集项,在采集项的配置表中每一项都有一个开关字段,或为YES,或为NO)和consumers(与采集项类似,也有一个对应的事件类型保存表配置项,为YES就表示对应的表保存性能数据,为NO就表示对应的表不保存性能数据)都启用了,所以默认不会收集所有的事件,可能你需要检测的事件并没有打开,需要进行设置,可以使用如下两个语句打开对应的instruments和consumers(行计数可能会因MySQL版本而异)。

select * from setup_instruments; 可以看到很多NO

--打开等待事件的采集器配置项开关,需要修改setup_instruments配置表中对应的采集器配置项
UPDATE setup_instruments SET ENABLED = 'YES', TIMED = 'YES'where name like 'wait%';

--打开等待事件的保存表配置开关,修改setup_consumers配置表中对应的配置项
UPDATE setup_consumers SET ENABLED = 'YES'where name like '%wait%';

--当配置完成之后可以查看当前server正在做什么,可以通过查询eve
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值