SQL执行流程
1. Mysql中的SQL执行流程
此图最好记住

(1)查询缓存









(2)解析器




(3)优化器




(4)执行器







2. Mysql8中SQL执行原理
https://www.bilibili.com/video/BV1iq4y1u7vj?p=111

2.1 确认profiling是否开启
(1)开启profiling的作用
可以让Mysql收集 SQL执行过程使用的资源情况,从而了解查询语句底层执行过程
(2) 如何查看profiling有没有开启
mysql> select @@profiling;
mysql> show variables like 'profiling';


2.2 多次执行相同SQL查询
select * from employees;
select * from employees;
2.3 查看profiles

可以查看到当前session的sql执行记录;
2.4 查看profile
1.默认查看的是最后一条sql语句的执行过程;

2.查看指定的sql语句
其中数字对应的是show profiles中的序号


第六条和第七条sql是一模一样的,查看各自的profile也是一样的,说明再第二次执行sql查询的时候是没有走查询缓存;
showProfile高级用法


8.0中查询如下语句:

没有查询缓存的,设置也没有意义;
5.7中查询:默认是关闭的

3. Mysql5.7中SQL执行原理
1.配置文件中开启查询缓存
vim /etc/my.cnf
添加:
query_cache_type=1
2.重启mysql服务
systemctl restart mysqld
退出重新连接mysql;


3.开启查询执行计划

4.执行语句两次
select * from departments;
5.查看profiles

6.查看profile



查询缓存用的是字符串当做key,所以sql字符串只要不一样,都不可以命中缓存!










