最近在学习林晓斌(丁奇)老师的《MySQL实战45讲》,受益匪浅,做一些笔记整理一下,帮助学习。如果有小伙伴感兴趣的话推荐原版课程,很不错。

1) --基础架构,一条SQL查询语句如何执行

  1. MySQL大体来说可以分为Server层存储引擎层两部分.

    Server层包括:连接器,查询缓存,分析器,优化器,执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期,时间,数学和加密函数等),所有跨存储引擎的功能在这一层实现,比如实现存储过程,触发器,视图等。

    存储引擎层:负责数据的存储和提取,其架构模式是插件式的,支持如InnoDB,MyISAM,Memory等多个存储引擎,现在最常用的存储引擎是InnoDB,它从MySQL5.5.5版本开始成为了默认存储引擎。

  2. 不同的存储引擎共用一个Server层。
  3. 连接器:连接器负责跟客户端建立连接,获取权限,维持和管理连接。(另:如果连接器认证通过,会到权限表里查出连接者的权限,之后这个连接里的操作权限都依赖于查出权限。也就是说如果Admin修改了某个用户的权限,只有当该用户重新建立连接才会生效。)
  4. 查询缓存:MySQL拿到一个查询请求后,会先去查询缓存中查看是否之前执行过这个条语句,如果可以找到就将结果直接返回。否则Mysql就进行后面的执行阶段。(Mysql8.0版直接将查询缓存功能删掉了。即使是之前的版本,也不建议使用查询缓存,因为其失效的很快。)
  5. 分析器:分析器会先做“词法分析”,即从你输入的"select"这个关键字识别出来这是一个查询语句,把你输入的字符串“ID”识别成“列ID”。之后会进行“语法分析”,判断你输入的sql语句是否满足语法规则。
  6. 优化器:优化器是在表里有多个索引的时候,决定使用哪个索引;或者在一个语句有多个关联(join)的时候,决定各个表的连接顺序(因此如果你要指定顺序的话应在sql中显示指明。)
  7. 执行器:执行器会先判断你对要操作的表有没有权限,如果有就继续执行。打开表的时候,执行器会根据表的引擎定义,去使用这个引擎提供的接口。

这个系列中每篇末尾都会有课后题,答案在下一讲中公布。因此笔者决定保留这种形式。

课后题:

如果表T中没有字段k,而去执行这个语句 select * from T where k = 1,那么会报错“Unknown column ‘k’ in ‘where clause’”。请问这个错误是在哪个阶段报出的?

后记:

  本来以为自己已经差不多弄懂了这一讲的东西,直到动手写笔记才意识有很多细节忽略了。坚持下去更新,尽快赶上我听课的进度。

MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行的更多相关文章

  1. MySQL 笔记整理(2) --日志系统,一条SQL查询语句如何执行

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 2) --日志系统,一条SQL查询语句如何执行 MySQL可以恢复到半个月内任意一秒的状态,它的实现和日志系统有关.上一篇中记录了一 ...

  2. 1 基础架构:一条sql查询语句如何执行?

    1 基础架构:一条sql查询语句如何执行? 分析一个最简单的查询 mysql> select * from T where ID=10: MySQL基本架构示意图 大体来说,mysql可以分为s ...

  3. mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?

    本文基于----MySQL实战45讲(极客时间----林晓斌 )整理----->https://time.geekbang.org/column/article/68319 一.第一节:一条sq ...

  4. 01.基础架构:一条SQL查询语句是如何执行的?学习记录

    01.基础架构:一条SQL查询语句是如何执行的?学习记录http://naotu.baidu.com/file/1c8fb5a0f2497c3a2655fed89099cb96?token=ff25d ...

  5. mysql系列-⼀条SQL查询语句是如何执⾏的?

    ⼀条SQL查询语句是如何执⾏的? ⼤体来说,MySQL 可以分为 Server 层和存储引擎层两部分 Server 层 Server 层包括连接器.查询缓存.分析器.优化器.执⾏器等,涵盖 MySQL ...

  6. 一文读懂一条 SQL 查询语句是如何执行的

    2001 年 MySQL 发布 3.23 版本,自此便开始获得广泛应用,随着不断地升级迭代,至今 MySQL 已经走过了 20 个年头. 为了充分发挥 MySQL 的性能并顺利地使用,就必须正确理解其 ...

  7. 01 | 基础架构:一条SQL查询语句是如何执行的?

    这是专栏的第一篇文章,我想来跟你聊聊MySQL的基础架构.我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL的学习也是这样.平时我们 ...

  8. MySQL 笔记整理(18) --为什么这些SQL语句逻辑相同,性能却差异巨大?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 18) --为什么这些SQL语句逻辑相同,性能却差异巨大? 本篇我们以三 ...

  9. mysql实战45讲读书笔记(一) 一条SQL查询语句是如何执行的

    我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表 ...

随机推荐

  1. Java-IO 字节流的使用和效率比较

    打算做一个系列,前面讲了基本的字符流的用法,这篇博客介绍一下字节流的基本用法: 一.基本使用: 基本字节流: FileInputStream   FileOutputStream BufferedIn ...

  2. CSS-单位em 和 rem

    1,em单位(css3新增单位) em:就是一种长度单位,它是参照当前元素的字号,如果没有设置,就参照父容器,一直到浏览器的默认字号大小 em 是相对长度单位(参照父元素),其参照当前元素字号大小,如 ...

  3. JAVA---MYSQL 基本知识点 第一部分

     一 :  什么是数据库? 数据库就是数据的仓库,用来存取数据的,也是一个文件系统,但是访问这个这个文件需要通过标准的SQL语句(统一的规则), 二 : 什么是关系型数据库?  关系型数据库通常保存的 ...

  4. 排列组合python

    python 的 itertools模块 可以专业的处理的排列组合问题 写在自己博客里,怕下次找不到喽

  5. ABP入门系列(2)——领域层创建实体

    ABP入门系列目录--学习Abp框架之实操演练 这一节我们主要和领域层打交道.首先我们要对ABP的体系结构以及从模板创建的解决方案进行一一对应.网上有代码生成器去简化我们这一步的任务,但是不建议初学者 ...

  6. 机器学习之正则化(Regularization)

    1. The Problem of Overfitting 1 还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图. 如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上 ...

  7. 升讯威微信营销系统开发实践:微信接口的 .NET 封装

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  8. placeholde属性在IE10以下浏览器上的兼容方案

    首先,判断浏览器是否支持placeholder属性:目前经验来看placeholder属性在     IE10及以上   才能正常显示,而我们实际项目中往往要求兼容到   IE8 var input ...

  9. [Swift]LeetCode519. 随机翻转矩阵 | Random Flip Matrix

    You are given the number of rows n_rows and number of columns n_cols of a 2D binary matrix where all ...

  10. 巡风源码阅读与分析---view.py

    巡风xunfeng----巡风源码阅读与分析 巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果 ...