SQL语句的执行过程

SQL语句的执行过程

下面是MySQL数据库包含的存储引擎,默认是InnoDB存储引擎

如上图所示,是SQL语句的执行过程:
①首先在客户端输入用户名和密码进行登录,连接器会验证客户端输入的用户名和密码的有效性,如果全部正确,就获取该用户对应的权限,用户在当前连接里面的所有操作,必须在权限范围内,如果超出了权限,就不允许执行;

在5.7版本以前,MySQL有缓存,缓存SQL语句对应的结果,但是必须保证两个SQL语句一模一样,才能使用到缓存,否则就要重新去执行SQL语句,去存储引擎里面进行查询和返回。大体来说,缓存并没有特别大的用处。所以从5.8以后,就去掉了缓存。

所以如果是在5.7版本以前,连接以后会去查询缓存。

②分析器进行词法分析和语法分析

③执行SQL,这个步骤分为三个小部分:prepare、optimize、execute

optimize阶段主要是在所有的执行计划里面选择最优的,需要考虑的是IO成本和CPU成本,必须:如果当前查询语句可以使用的索引有多个,就需要在所有的索引里面根据规则选择最优的索引,根据IO成本和CPU成本确定SQL执行计划

execute阶段是执行确定的SQL执行计划,和存储引擎进行交互,然后把对应的查询结构返回给客户端

MySQL数据库存储引擎

InnoDB

默认是InnoDB存储引擎,支持事务

事务的特性:ACID(原子性、一致性、隔离性、持久性)

事务的隔离级别:读未提交、读已提交、可重复读、串行化

MyISAM

不支持事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值