mysql从头学起(一)----- 性能监控

前言

mysql做为当今关系型数据库的典型代表,以其开源、免费,性能较好等原因是各中小型企业项目中不可或缺的一部分。也因为这些原因,mysql也是现在coder面试中必不可少的一部分。
近来也面试了一些人,几乎所有人都知道mysql,也都是用过。数据库是用来存储数据的,这无可厚非。我们都知道,系统优化中要考虑的一个重要点就是数据库的性能,如何快速的从数据库获取需要的数据,从而也就有了一道绕不开的坎,如何优化数据库?大多数面试者都知道数据库索引这个问题,也提到了如何编写sql和创建索引以提高sql执行效率,再或者知道通过explain关键字查看sql的执行计划,了解更多的人可能会知道索引的分类聚簇索引以及非聚簇索引以及二者的关系等等。但是知道归知道,我发现绝大多数人同我一样,没有对这块的东西有一个系统全面的认识和理解。也因为最近不是特别忙,所以萌生了这个想法,打算从头开始相对系统的学习一遍mysql,所以有了这篇文章,希望对学过的东西做以记录。

备注:本系列文档所有涉及到的数据库相关案例以mysql5.7为准,
通过 select version() 可以查看已经安装mysql的版本。

我们知道,mysql服务器接收到一个请求数据的请求是要经历以下几个步骤的:
1.连接器-----校验用户的信息,控制用户的连接。

2.分析器-----对客户端发过来的sql进行词法分析,语法分析。

3.优化器-----通过msql内置的优化器,优化sql语句,规定语句的执行流程,顺带提一句,优化器有两种,基于规则的优化器(RBO)与基于代价的优化器(CBO)
RBO: Rule-Based Optimization 基于规则的优化器
CBO: Cost-Based Optimization 基于代价的优化器

4.执行器-----sql语句的实际执行者。

mysql性能监控

由于sql语句的执行需要经过以上几个步骤,那么要对一条sql进行优化,我们首先需要知道sql经历上面这些步骤时哪一个或哪些步骤比较慢。今天先来了解一些msql自带的小工具,了解这些信息。
先来一个小案例:
在这里插入图片描述
什么!SELECT * FROM user; 执行这条sql查询到3条数据,耗时0.00 sec,查询查询这3条数据没有消耗一点时间?怎么可能!
执行 set profiling = 1;
然后再次执行该查询语句,然后通过 show profiles 就可以看到这条语句的耗时信息了
在这里插入图片描述

同时通过show profile 命令还可以查看每个步骤的具体执行时间:

在这里插入图片描述
如果执行了很多sql,通过SHOW PROFILES 命令可以查看到多条sql的执行时间
在这里插入图片描述
执行show profile查看的是最近的一条sql的执行信息,这时可以通过
show profile for query query_ID来查看制定sql的执行情况。
在这里插入图片描述
同时可以通过添加cpu等茶树查看指定信息(cpu、block io等),如:
在这里插入图片描述
当然,也可以通过all来查看所有信息:
在这里插入图片描述

show profile命令更多详细信息见mysql官网 mysql官网-show profile
当然,官网也说明了,show prfoile、show profiles可能在将来的版本被弃用,建议使用新的Performance Schema,详见 mysql官网-Performance Schema
相较于show prfoile、show profiles,Performance Schema提供了更加详细全面的监控,想要进一步了解Performance Schema的可以参考mysql官网。今天这篇文章就到这里,下篇开始我们将详细介绍使用mysql过程中需要注意的一些小细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不务正业的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值