mysql进阶知识_mysql进阶学习一之知识点总结

环境:centos7+mysql5.7

1 mysql5.7的安装

这里使用yum安装,参考这个老哥的博客  ,反正我安装的时候一言难尽,重装了好几次,哎,平常自己玩的都是用的docker...

装好了记得根据上面的博客去初始化密码哦!

2 mysql的逻辑架构

mysql底层就是经过下面这几部分,我们要知道,执行引擎才是真正干活的;

可以发现这里运行了缓存,首先在缓存中取数据,缓存中能命中就直接从缓存中去,缓存中存数据是sql语句为键,实际的数据为值

例如:select name from stu where id = 1;  和select name from stu where id <2 and id>0  ,虽然两条sql在我们看来是一样的,但是不会命中缓存,因为sql不一样

164301d0cb6723734518c0351d74b20c.png

在上图中第5步中的优化器Optimizer,会对我们执行的sql进行优化,例如我们写的sql格式如下:

e149c3fb9b93b970c309757e1e6b18cd.png

然后在优化器中可能就变成了下面这种(每次的优化都有可能不一样)

0f0f69ee52af36dad92be9a7758d28f7.png

可以看看mysql中有几种执行引擎:show engines;

默认的就是Innodb,从下面可以看到这个引擎支持事务,行锁和外键,一般还会说MyISAM的特点,就是不支持事务,不支持行锁(只支持表锁),不支持外键;

两个引擎还有一个不同就是,MyISAM只缓存索引,而InnoDb缓存索引和实际的数据;

那什么时候会使用MyISAM引擎呢?其实就是mysql自带的一些表会用这个引擎,因为不需要高并发嘛,一般也是管理员去修改一下,所以锁住整张表也无所谓;

b697a4b4c1d66a07d545c403a17e5d2c.png

3.性能

项目中mysql使用时间长了之后, 性能会下降,sql的执行时间变长,一般有几个原因

(1)sql中关联的表太多:比如有太多的join,我们需要对sql进行优化

(2)没有充分的利用索引: 看情况去建立索引

(3)数据量太多:sql的优化已经到了极致,数据量太多就需要进行分库分表

(4)mysql服务器参数调优:这个一般也不会去修改,主要是调整my.cnf文件

对sql进行优化,一般就是添加索引,我们一些情况需要添加索引:

(1)频繁的作为查询条件的字段

(2)与其他表作为关联的字段

(3)建立组合索引优于单键索引

(4)  排序语句中的字段加索引,因为索引是已经排序好了的,可以极大的提高排序速度

(5)分组的字段,因为group by是先做的order by,然后再进行的分组

不应该创建索引的字段:

(1)表的记录太少了

(2)经常进行增删改的字段,因为也需要对索引进行相应的操作

(3)where条件中用不到的字段

(4)区分度不高的字段,比如性别

4 explain查看执行计划

在mysql的逻辑架构图中的第5步会调用优化器Optimizer会生成执行计划,然后执行引擎就是根据这个执行计划.........

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值