mysql查询原理
1、建立连接
首先我们程序员通过连接驱动和连接池建立连接
注意
客户端和服务端发送消息都是完整的,只有完整的消息才会得到响应;
我们可以设置参数控制sql数据包发送的容量
2、查询缓存
查询缓存是Map结构,key是sql语句,value是查询结果
如果查询过结果会直接返回给客户端
注意
8.0版本删除了查询缓存
原因
- 每次请求都会查询缓存,有性能消耗,如果命中率低,效率更差
- 没有命中查询,在查询后新建缓存,对性能也是不小的消耗;
- 为了保证数据一直,会添加表级锁,影响性能;
3、sql解析
进行关键字,非关键字标记,语法解析,验证;
4、预处理器
请求拆分,提交sql模板语句,再不断提交参数,也会进行参数验证;
5、sql优化
根据数据表,数据量,索引等计算io成本消耗和cpu消耗,进行sql优化处理;
优化通过优化规则
6、执行器
组合调用Handler API接口,拿到返回结果;
7、返回结果
将结果返回客户端;