登录  /  注册

MySQL架构设计实例分析

王林
发布: 2023-05-27 13:41:03
转载
1020人浏览过

1. MySQL整体架构

由图中可以看到mysql架构主要分为server层存储引擎层

Server层又分为连接器、缓存、分析器、优化器、执行器。所有跨存储引擎的功能都在这层实现,比如:函数、存储过程、触发器、视图等。

存储引擎是可插拔式的,常见的存储引擎有MyISAM、InnoDB、Memory等,MySQL5.5之前默认的是MyISAM,之后默认的是InnoDB。

MySQL架构设计实例分析

2. 连接器

连接器主要用来管理客户端的连接和用户身份认证。

TCP协议被用于客户端和服务器端的连接,连接通过进行TCP握手建立,并在此基础上,连接器开始进行身份验证。

> mysql -hlocalhost -P3306 -uroot -p
登录后复制

如果认证失败,就会出现错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

可以通过 show processlist 命令查看系统所有连接的信息:

MySQL架构设计实例分析

其中Commond列表示连接状态,Daemon表示后台进程,Query表示查询,Sleep表示空闲连接。

3. 查询缓存

客户端请求的查询不会直接访问存储引擎,而是先检查缓存中是否存在结果。如果结果已经被缓存,直接返回;否则,重新执行查询过程,查询结束后再将结果缓存。

失效缓存将在数据表发生更改时清空,如执行insert、update、delete、alter操作。

对于频繁变更的数据表来说,缓存命中率很低。由于使用缓存会降低读写性能,因此在 MySQL 8.0 之后的版本中,缓存模块被移除。

可以通过下面命令查看是否开启了缓存:

MySQL架构设计实例分析

4. 分析器

分析器主要对SQL语句进行词法分析语法分析

对于MySQL的关键字和每个词语的含义,需要进行词法分析。然后进行语法分析,检测SQL语句是否符合MySQL语法要求。

MySQL通过识别字符串中列名、表名、where、select/update/insert 等MySQL关键字,在根据语法规则判断sql是否满足语法,最终会生成一个抽象语法树(AST)。

比如:SQL语句中少写个where关键字,就会提示错误。

mysql> select * from user id=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1' at line 1
登录后复制

5. 优化器

在真正执行SQL语句之前,还需要经过优化器处理。

我们熟知的执行计划(Explain)就是优化器生成的。

优化器主要有两个作用:逻辑优化物理优化

逻辑优化主要进行等价谓词重写、条件化简、子查询消除、连接消除、语义优化、分组合并、选择下推、索引优化查询、表查询替换视图查询、Union替换or操作等。

通过贪心算法和代价估算模型,物理优化的主要目的是估算每种执行方式的代价。并使用索引优化表连接,最终生成查询执行计划。

附上MySQL优化器架构图,可以清晰的看到优化过程:

MySQL架构设计实例分析

6. 执行器

在优化器优化完SQL,并生成了执行计划后,就会把执行计划传递给执行器。

执行器调用存储引擎接口,真正的执行SQL查询。SQL语句的执行在获取存储引擎返回的查询结果,然后将其返回给客户端后结束。

以上就是MySQL架构设计实例分析的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号