mysql演变:
3.0架构:
mysql 架构图:
补充:
server层:
1.连接器:
连接器负责跟客户端建立连接、获取权限、维持和管理连接。连接命令:mysql -h$ip -P$port -u$user -p 发送完该命令后,会进行经典的TCP连接目标数据库实例,当然也有unix socket只针对本地client/server的连接。
mysql连接上了以后,如果长时间没动静,则会断开连接。由于连接建立过程比较复杂并且耗费资源,所以应该尽量使用长连接,避免连接重新建立。
但长连接也有问题,维护长连接也会消耗资源,尤其是内存。当内存被长连接占用过多,系统会杀掉这些进程,导致mysql异常重启。如果发生重启,意味着很多服务会挂掉。
因此解决方案:
2.查询缓存:
但是查询缓存往往利大于弊:
mysql8.0已经将这块整体删除。
3.分析器:
4.优化器:
5.执行器:
sql语句执行总览:
存储引擎层总览:
实例层:
物理层:
内存和物理结构:
新特性:
innodb支持功能:
innodb要点:
可以更改慢查询标准,set long_query_time = xxx 这样,执行时间超过该值的sql语句都会记录到慢查询日志。
重点:日志、数据、配置文件,需要重点关注。
问题:检查where条件是在server层的哪一个部分开始执行?