MySQL-基础架构

1、基础架构

MySQL采用分层结构,主要包括server层和存储引擎层两部分。

Server层主要功能是权限管理和 SQL 解析。包括连接器、查询缓存、分析器、优化器和执行器等。涵盖MySQL的大多数核心服务功能,以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

存储引擎层采用插件化架构,包含 InnoDB、MyISAM、Memory 等,主要负责数据的存储和读取。现在最常用的存储引擎是InnoDB,从MySQL 5.5.5 版本开始成为了默认存储引擎。

2、server层组件

2.1 连接器

连接器负责跟客户端建立连接、获取权限、维持和管理连接。

  • 如果用户名或密码不对,你就会收到一个 "access denied for user" 的错误,然后客户端程序结束执行。
  • 如果用户名密码验证通过,连接器会到权限表里面查出你拥有的权限。

当一个用户成功建立连接后,即使用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。

当客户端连接成功后,长时间没操作,连接器会自动断开该连接,默认是8小时,由 wait_timeout 参数控制。

2.2 查询缓存

MySQL 8.0 版本后移除该功能。

MySQL缓存是以key-value形式存储内存中,key执行sql语句,value是查询结果,如果缓存命中不需要执行后面的复杂过程了,能提升效率,但是命中率很低,只要有对一个表的更新,这个表上所有的查询缓存都会被清空,而且会消耗内存资源。

  • 命中率比较低

  • 要进行多一次hash计算,key是sql语句的hash值(查询条件位置变动都可能导致hash值不一致)

  • 内存消耗比较大

通过参数 query_cache_type 设置是否开启查询缓存,设置为0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存。

2.3 分析器
  • 词法分析:解析和提取 SQL 语句中的关键信息。首先要提取关键字,比如 select,提出查询的表,提出字段名,提出查询条件等。

  • 检验 SQL 语句,即判断词法分析提取的关键信息是否正确,是否符合 MySQL 的语法。

2.4 优化器

优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。

2.5 执行器

当选择了执行方案后,MySQL 就准备开始执行了,首先执行前会校验该用户对表有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果。

posted @   原来是你~~~  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示