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字符串只要不一样,都不可以命中缓存!