sql执行流程
MySQL可以分为Server层和存储引擎两部分
- Server层包含连接器,查询缓存,分析器,优化器,执行器等,涵盖了MySQL的大多数的核心服务功能,以及所有的内置函数(如日期,时间,数学,和加密函数等),所有的跨存储引擎的功能都在这一层实现,比如存储过程,触发器,试图等
- 存储引擎层负责数据的存储和提取。其架构是插件式的,支持InnoDB,MyISAM,Memory等多个存储引擎
-
连接器。管理连接、权限验证。 解决长连接问题:可以代码定期关闭连接。mysql5.7版本之后,每次执行一个比较大的操作后,通过执行mysql_reset_connection来重新初始化连接资源。这个过程不需要重连和重新做权限验证,速度会比较快
-
查询缓存。MYSQL 8.0没有缓存查询的功能,已经被抛弃。
- 1.query_cache_type
0(off):关闭缓存的功能,任何情况下都不会使用缓存
1(on): 开启缓存,但是当select 语句中使用了SQL_NO_CACHE提示后,将不使用缓存
2(demand):开启缓存查询,当select语句中使用了SQL_CACHE提示后,才使用缓存查询 - 如果为1 又不想使用缓存:
select sql_no_cache * from sys_user - 如果为2 向使用缓存
select sql_cache * from sys_user
- 1.query_cache_type
-
分析器。分析语句是查询还是更新,还是语法有错误
-
优化器。进行sql优化,选择最优sql
-
执行器。最终运行sql到存储器获取数据