1.MySQL的逻辑架构图

大体来说,MySQL可分为Server和存储引擎两部分。
Server层包含连接器,查询缓存,分析器,优化器,执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
而存储引擎负责数据的存储和提取。其架构模式是插件式的,支持MyIASM,InnoDB,Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL5.5.5版本成为默认的存储引擎。
连接器
第一步,你会先连接到这个数据库上,这个时候接待你的就是连接器。连接器负责跟客户端建立连接,获取权限,维持和管理连接。连接器的连接时间是由参数wait_timeout控制的,默认是8小时。
如果在连接断开后,客户端再次发送请求,就会收到一个错误提醒: Lost Connection to MySQL server during query。这时候如果你要继续,就需要重连,然后再执行请求了。
数据库里面,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。
建立连接的过程通常是比较复杂的,所以我建议你在使用中要尽量减少建立连接的动作,也就是尽量使用长连接。
但是全部使用长连接后,你会发现有的时候内存涨的特别快,这是因为MySQL在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累计下来,可能导致内存占用太大,被系统强行杀掉,从现象来看就是MySQL异常重启了。
怎么解决这个问题呢?你可以考虑以下两种方案
1.定期断开长连接
2.版本如果是5.7+可以通过执行mysql_reset_connection,这个命令不需要重连和重新做权限认证,但是会将连接恢复到刚创建完的状态。
查询缓存(MySQL8.0后已经废弃)
分析器
主要功能:词法分析,检验SQL是否符合规定
优化器
主要功能: 决定索引的使用,决定表的连接关系。
执行器
主要功能: 先判断当前连接有没有权限,有则执行SQL,无则返回权限不足.
小结: 本节主要学习了MySQL的逻辑架构,对SQL语句的完整执行流程的各个阶段有了一个初步印象
