zoukankan      html  css  js  c++  java
  • 一条查询sql执行流程

    连接器

      我们和数据库进行交互的话,首先要进行连接。服务端校验账号密码无误后,就意味着一个用户成功建立连接,可以进行各种操作了。在连接的过程中,账号权限发生了改变也是感知不到的,必须重新连接才能获取账号最新权限。

    缓存

      建立完连接后,现在执行select就来到了第二步:查询缓存,就是以sql为key,去内存中查询结果,如果能够在缓存中找到 value,就会直接返回给客户端。如果不在缓存中,就继续往后执行,然后将结果存在内存中。不过考虑到时效性,查询mysql缓存并不是一个比较好的方案,所以在mysql8.0+直接把 缓存模板 给删掉了。

    解析器

      如果没有命中索引,就要开始真正执行语句了。首先会讲我们输入的字符串进行“词法解析” 识别出 表名和字段 ;然后进行 “语法分析” 看看是否符合sql语法规范。

    优化器

      前面识别完语法后,现在mysql就要对你的sql进行预处理了,比如你的sql有多个索引,用哪个比较好;比如关联查询表的连接顺序、以哪个做驱动表比较好。

    执行器

      现在离正真执行sql就差临门一脚了。他会判断你对表有没有操作权限。然后权限就直接返回异常提示;有权限就会交给引擎去执行了。

  • 相关阅读:
    QQ机器人
    Javascript实现base64的加密解密
    C# 对List<T>取交集、连集及差集
    简单正则验证
    中止线程
    线程同步synchronized
    volatile
    并发
    垃圾回收机制
    给定一个正整数num ,反复将各个位上的数字相加,直到结果为一位数
  • 原文地址:https://www.cnblogs.com/wlwl/p/14975768.html
Copyright © 2011-2022 走看看