《Mysql实战45讲》学习笔记第一讲 --- 基础架构
1、Mysql 基本架构示意图
i、连接层
负责跟客户端建立连接获取权限、维持和管理连接。
连接命令: mysql -h -P -u -p。
查看连接状态: show processlist
注意:(1)建议密码不直接跟在-p后,因为可能会导致密码泄露。(2)连接成功后,权限的修改影响的是再新建的连接。
(3)客户端太长时间没有动静时连接器会将它自动断开,这个时间是由参数waite_timeout控制,默认8小时。
(4)尽量使用长连接。为解决内存占用问题的两个方案:定期断开长连接、Mysql5.7以上版本,执行 mysql_reset_connection 进行连接的初始化。
ii、查询缓存
缓存的存储格式 key-value,key为查询语句,value为查询结果。
但是大多数情况下我会建议你不要使用查询缓存,为什么呢?因为查询缓存往往弊大于利。Mysql8.0版本以上无查询缓存功能。
关闭查询缓存的配置方式: query_cache_type = DEMAND, 若明确需要使用查询缓存的语句使用SQL_CACHE 显示指定。
例如 select sql_cache * from T where id=10;
iii、分析器 ---要做什么
先做“词法分析”:识别 关键字
再做“语法分析”:判断sql语句是否符合Mysql语法。
iiii、优化器 -- 该怎么做
多个索引时决定使用那个索引,多表关联时觉的各个表的连接顺序。
iiiii、执行器
先判断是否对该表有相关权限。
查询的过程是从第一条开始做遍历查询,判断是否符合条件。
引擎扫描行数跟rows_examined并不是完全相同的