您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL架构设计实例分析

2024/4/14 23:59:46发布22次查看
1. mysql整体架构由图中可以看到mysql架构主要分为server层和存储引擎层。
server层又分为连接器、缓存、分析器、优化器、执行器。所有跨存储引擎的功能都在这层实现,比如:函数、存储过程、触发器、视图等。
存储引擎是可插拔式的,常见的存储引擎有myisam、innodb、memory等,mysql5.5之前默认的是myisam,之后默认的是innodb。
2. 连接器连接器主要用来管理客户端的连接和用户身份认证。
tcp协议被用于客户端和服务器端的连接,连接通过进行tcp握手建立,并在此基础上,连接器开始进行身份验证。
> mysql -hlocalhost -p3306 -uroot -p
如果认证失败,就会出现错误 error 1045 (28000): access denied for user 'root'@'localhost' (using password: yes)。
可以通过 show processlist 命令查看系统所有连接的信息:
其中commond列表示连接状态,daemon表示后台进程,query表示查询,sleep表示空闲连接。
3. 查询缓存客户端请求的查询不会直接访问存储引擎,而是先检查缓存中是否存在结果。如果结果已经被缓存,直接返回;否则,重新执行查询过程,查询结束后再将结果缓存。
失效缓存将在数据表发生更改时清空,如执行insert、update、delete、alter操作。
对于频繁变更的数据表来说,缓存命中率很低。由于使用缓存会降低读写性能,因此在 mysql 8.0 之后的版本中,缓存模块被移除。
可以通过下面命令查看是否开启了缓存:
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优化器架构图,可以清晰的看到优化过程:
6. 执行器在优化器优化完sql,并生成了执行计划后,就会把执行计划传递给执行器。
执行器调用存储引擎接口,真正的执行sql查询。sql语句的执行在获取存储引擎返回的查询结果,然后将其返回给客户端后结束。
以上就是mysql架构设计实例分析的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product