MySQL学习-运行原理 第一课

第一步 连接器(管理连接,权限验证)

连接器主要负责客户端建立连接,获取权限,维护和管理连接

1). 判断当前账号密码是否错误

2). 获取当前账号的权限(如果修改权限需要重新链接)

第二步 查询缓存(命中则返回缓存)

查询缓存主要负责查询SQL语句存在缓存则直接返回内容

SELECT * FROM table_a WHERE id=1

上面查询请求后,会先查询缓存,看看之前是不是执行过这条语句 如果执行过会形成key value的形式存储在内存中,key是查询的语句,value是查询的结果直接返回给客户端

如果不存在就会进入下面的阶段,执行结果会存在缓存中,下次可以直接查询缓存减少执行步骤,提高了查询效率,

建议不要使用

经常失效 例如 一张表经常 增删改 这个表的查询缓存会被经常清空.费劲巴拉存的缓存,还有使用就给干掉了,加大了数据库压力

当然如果你有一个静态日志表系统配置表,不经常更新可以使用查询缓存

MySQL8.0已经删除该功能

第三步 分析器(词法分析,语法分析)

分析器主要负责对SQL语句进行分析

SELECT * FROM table_a WHERE id=1

每个字符串代表什么意思 例如上面查询 'select' 为关键字 'table_a' 为表  id为列,进行语法分析完之后会判断SQL语句是否满总MySQL语法,错误会在这个返回信息

第四步 优化器(执行计划生成,索引选择)

优化器主要负责对表中的多个索引查询执行的效率优化

SELECT * FROM table_a WHERE id=1 and type=1

例如上面查询 先查询id=1再查询type=1,还是先查询type=1再查下id=1,两个查询执行结果是一样的但是执行效率不一样,这个时候就需要优化器处理了

第五步 执行器(操作索引,返回结果)

执行器主要负责对SQL语句进行执行

执行先判断是否有执行的权限,如果没有返回权限错误,如果有权限就会执行,打开表的时候执行器根据表的存储引擎定义,去使用引擎提供的接口

SELECT * FROM table_a WHERE type=1

上面SQL语句执行器的执行流程

存储引擎接口获取表的第一行判断type是否等于1,重复执行逻辑判断直至最后一行, 执行器把满足条件的所有集合返回给客户端

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值