Mysql 查询流程及相关组件

学习Mysql实战45讲总结

1.基本执行流程相关组件

image.png

2.相关组件说明

2.1 连接器

(1)访问数据库,需要ip+端口+密码走tcp 协议进行连接

(2)连接器进行密码相关权限验证

(3)建立连接,长连接或短连接,由wait_timeout 参数控制

 Q1长短连接区别

短连接时间短,查询几次就断开了,频繁的断开重连效率极低,故大多数时间选择长连接。长连接一致保持与客户端连接,时间很长。

Q2那全部使用长连接不就好了?

长连接长时间不断开会导致缓存越来越多,每次查询,之前操作引起的相关缓存一直存在,导致OOM.

解决方案:1.采用定期断开 2.采用mysql5.7 版本,mysql_reset_connection可以保持连接又还原到初始状态

2.2查询缓存

缓存机制

上次的查询结果会进行缓存,下次查询的时候,会判断去缓存中查询

不建议使用原因

更新一次相关缓存都要清楚,无法保证insert update 的情况下,缓存使用弊大于利

使用方式

(1)关闭缓存 设置query_cache_type DEMAND

(2)指定查询使用缓存 select SQL_CACHE * from t where a=1;

补充:

8.0版本以后查询缓存从mysql中移除了

2.3分析器

语法 ,语义分析 ,判断是不是写错了,查错了,有没有符合SQL语法的规范(规范检查),有没有当前库的当前表当前字段(现有情况检查)

2.4优化器

选择执行方案,最优的索引选择

2.5执行器

进行执行方案执行,执行前会校验有没有相关权限(因为像存储计划等sql 在这个阶段才会发现没有读取查询权限)

2.6存储引擎

底层内存及算法,提供读写接口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章