0、前章
刚开始在了解MySQL的时候,要分三个层次:最上层的client,中间层的server层,以及最底层的储存引擎层。
其实不论事务也好、索引也好、锁也好,都是和存储引擎相关的。首先客户端向MySQL的server层发送一个连接请求,那也就意味着在server层中间需要有一个连接,用来提供连接服务,叫连接器。做一些权限的验证,比如用户名和密码的匹配等。第二步就会用server层的分析器对于SQL语句进行分析。本质上来说发送过来的SQL语句就是一个字符串,那么MySQL的服务又是怎么把这个字符串进行对应的执行。所以就需要用到分析器,把SQL语句进行一个切分,按照特定的关键字(比如说from、where等)进行切分,最终会变成AST(抽象语法树,就是一个树形目录,一层一层的)。而一个SQL语句会有N多种不同的执行方式,比如A join B,是先读取A表的数据还是先读取B表的数据?而这个选择就是分析器的下一层,也就是优化器来做的。MySQL自带两种优化器,RBO(基于规则的优化)和CBO(基于成本的优化)。而现在在企业级的实际应用中,其实更多的是选择CBO的方式,因为对于生产环境的查询来讲自然是越快越好。而当优化器优化完以后,下一步就是执行器。执行器会直接和存储引擎进行交涉,存储引擎会在尽量减少IO成本的情况下从磁盘上获取数据。
在MySQL8之前,ser
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111898.html