学习Mysql实战45讲总结
1.基本执行流程相关组件
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存储引擎
底层内存及算法,提供读写接口