一:sql语句查询的执行流程

mysql逻辑架构图
1.连接器:权限连接和管理验证,通过-h(ip地址) -P(端口号)-u(账号) -p(密码)登录,可以通过show processlist的结果查看

当前连接是否空闲连接,如果command列显示sleep表示空闲,可以通过设置参数wait-timeout控制连接端开,默认是8小时

2.缓存:缓存存储的数据结构是键值对,键保存sql查询语句,值保存的是结果集。连接成功后,会先判断是否命中缓冲,是就直接返回结果集,否就继续往下执行,因为如果频繁更新操作,就会造成缓存被清空,耗费巨大性能,在8.0版本后被删除,说明这个模板将被淘汰,所以不过多解释 。

3.分析器:分为词法分析以及语法分析,一条sql语句是由字符串与空格组成,词法分析会对此sql语句进行拆分,获取了select关键词mysql就知道了这条是查询语句,接下来用语法分析判断这条sql是否规范。

4.优化器:当表中有过多索引时,决定使用哪个索引;当有多表关联时,决定各个表的执行顺序。

5.执行器:开始执行时,会对这个表先判断有没执行查询的权限(这个一般是在缓存返回结果集前是判断,或是在优化器之前进行判断),如果有查询权限,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。

6.存储器:存储以及查询数据,在mysql5.5.5版本之后,默认引擎为InnoDB引擎,如果要更改引擎,可以在创建表时使用engine=Memory

发布了21 篇原创文章 · 获赞 52 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39148512/article/details/104052278