数据库存储引擎及查询sql执行流程

  通过公开课学习的,记录一下~~~

数据库主要存储引擎

myisam

  支持表级别的锁,不支持事务,读写不能并发进行,插入和查询会锁表,但因为直接存储了行数,则执行count更快,但是加上条件就不行了。

innodb

  支持事务、支持行级锁表级锁两种粒度,支持XA两阶段提交协议,支持嵌套事务,并且支持读和写并发操作。

memory

  存储在内存,一般用于临时表,读写速度快,如果重启会造成数据丢失。

csv

  电子表格,数据以逗号分隔,不允许有空行,不支持索引。导入导出数据时,用CSV引擎还是可以的。

查询语句的执行流程

在这里插入图片描述
  以上图所示,大概的sql查询流程如下:

  1. 客户端与服务端建立TCP连接后,
    会先去缓存里验证用户权限信息,如果失效或者其他情况会直接报出连接问题。(紫色箭头)
  2. 服务端接收到sql后会先去缓存里查询是否存在该语句的缓存结果,如果存在则直接返回。(黄色箭头)
  3. 如果缓存里没有,sql分析器就会对SQL语句进行词法分析和语法分析,检验SQL语句的正确性,通过之后继续往下执行。
  4. 语法分析后,优化器会对sql进行解析,判断出走什么索引,怎么执行,生成出sql执行计划,还会优化重写sql。
  5. 执行器检验当前用户的操作权限,如果在权限内,根据执行计划,通过对应的存储引擎执行sql,拿到结果,并返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁壮成长的凌大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值