【黄啊码】MySQL入门—1、SQL 的执行流程

大家好!我是黄啊码,鉴于大家对于学习的热情,从今天起,将连载mysql的相关知识,需要学习的可以注意我的更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜!

首先我们来看一张图:

【黄啊码】MySQL入门—1、SQL 的执行流程

我们所看到的的MySQL是由三个层组成的,分别如下:

连接层:负责客户端和服务器端建立连接,客户端发送 SQL 至服务器端,简单来说就是交互
SQL 层:对 SQL 语句进行查询处理;
存储引擎层:与数据库文件打交道,负责数据的存储和读取,分别有磁盘、内存和网络。
我们再来看另外一张图,以下是SQL语句的执行流程:

【黄啊码】MySQL入门—1、SQL 的执行流程

简而言之就是一句话:SQL 语句→缓存查询→解析器→优化器→执行器。

缓存查询:该功能是mysql8.0之前的操作,缓存从字面意思就是从缓存能拿到就读取缓存,拿不到再进行查询,但现在已经有redis这类的缓存数据库了,而且数据库又是频繁写入的库,对于我们来说有点鸡肋,所以从mysql8.0之后,官方已经直接抛弃了。

解析器:相当于咱们英语中的翻译,具体有:语法分析、语义分析,毕竟我们写的东西机器是不懂的,得它们自己翻译成自己懂的东西。

优化器:选择最优的执行方案,从而提高执行效率,比如索引之类的。

执行器:字面意思就是执行我们所写的sql语句,当然前提是你当前用户具备了执行的权限。

而在存储引擎方面,MySQL则有自己独到的存储引擎,常见的、常用的有InnoDB和MyISAM,下面我具体列举一下:

InnoDB 存储引擎:它是 MySQL 5.5 版本之后默认的存储引擎,最大的特点是支持事务、行级锁定、外键约束等。
MyISAM 存储引擎:在 MySQL 5.5 版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特点是速度快,占用资源少。
Memory 存储引擎:使用系统内存作为存储介质,以便得到更快的响应速度。不过如果 mysqld 进程崩溃,则会导致所有的数据丢失,因此我们只有当数据是临时的情况下才使用 Memory 存储引擎。
NDB 存储引擎:也叫做 NDB Cluster 存储引擎,主要用于 MySQL Cluster 分布式集群环境,类似于 Oracle 的 RAC 集群
Archive 存储引擎:它有很好的压缩机制,用于文件归档,在请求写入时会进行压缩,所以也经常用来做仓库。
MySQL更独到的是做到了按表来分配存储引擎,而不是按库,这是相对人性化的一点。

对于小企业来说,1、2种是最常见不过的了吧,但如果想进大厂,后边这三种也必须了解和学会,不然你依旧是个小小白。

好了,今天的课程就到这里,下期我们继续,敬请期待。

我是黄啊码,码字的码,退。。。退。。。退。。。朝!

Original: https://www.cnblogs.com/huangama/p/16506675.html
Author: 黄啊码
Title: 【黄啊码】MySQL入门—1、SQL 的执行流程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619691/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 我的JAVA面试题备忘录

    以下是我收集的一些问题,有的是网上摘录的,有的是自己参加面试被问到的,有的是工作或学习时遇到的,等等。 为什么要记录这些呢? 一方面,我相信,这样做对我自己的技术提升是有帮助的。在…

    数据库 2023年6月6日
    089
  • ubuntu设置时区

    posted @2022-06-21 08:30 一份人间烟火 阅读(2 ) 评论() 编辑 Original: https://www.cnblogs.com/zcxxcvbn/…

    数据库 2023年6月9日
    0131
  • dockerfile

    基础结构 指令 from label maintainer run cmd export env add copy entrypoint volume user workdir o…

    数据库 2023年6月14日
    0107
  • 给小白的 PG 容器化部署教程(下)

    作者:王志斌编辑:钟华龙 本文来自社区小伙伴 王志斌 的投稿。从小白的角度,带你一步步实现将 RadonDB PostgreSQL 集群部署到 Kubernetes 上。文章分为上…

    数据库 2023年5月24日
    0131
  • 能尽量用数据库代替内存就用吧,减少整天担心内存问题

    游戏不好搞啊,设计的东西,能尽量简单就简单,代码太多判断就写死行了,反正它运行起来是对的就行了。 情形:09:00 昨天发生了很痛苦的一件事情,那就是游戏中data内存同步不到da…

    数据库 2023年6月14日
    097
  • MYSQL–>SQL语法

    注:DDL(Data definition Language)数据库定义(比如说表,数据库)DML(Data Mainpulation Language)数据库 表的增删改查DQL…

    数据库 2023年5月24日
    0151
  • SpringMVC完整版详解

    1.回顾MVC 1.1什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法来组…

    数据库 2023年6月16日
    0106
  • c++ map查找键值

    map用法 查找键是否存在 1、count函数 count函数用于统计key值在map中出现的次数,map的key不允许重复,因此如果key存在返回1,不存在返回0 if (mp….

    数据库 2023年6月6日
    0289
  • MySQL 8.0 新特性梳理汇总

    一 历史版本发布回顾 从上图可以看出,基本遵循 5+3+3 模式 5—GA发布后,5年 就停止通用常规的更新了(功能不再更新了); 3—企业版的,+3年功能…

    数据库 2023年6月16日
    0112
  • 1001-MySQL学习-第一节自习课

    MySQL学习(第一节自习课) 一. 软件下载、安装 下载地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->in…

    数据库 2023年5月24日
    0122
  • RabbitMQ

    安装Rabbitmq 1.由于需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang-nox 2.安装r…

    数据库 2023年6月9日
    0106
  • Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天 shutil 模块 zipfile tarfile 模块 注意:压缩打包/解压解包目录和文件使用tarfile模块而不要使用shutil 模块!!! os文件…

    数据库 2023年6月9日
    0104
  • 你是否听说过 HashMap 在多线程环境下操作可能会导致程序死循环?

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、问题描述 经常有些面试官会问, 是否了解过 HashMap 在多线程环境下使用时可能会发生死循环,导致服务器 cpu 100…

    数据库 2023年6月14日
    0115
  • 老板:把系统从单体架构升级到集群架构!

    首发于公众号:BiggerBoy 如题,本文针对工作中实际经验,整理了把一个单体架构的系统升级成集群架构需要做的准备工作,以及为集群架构的升级做指导方针。 本文首先分析了单体架构存…

    数据库 2023年6月11日
    097
  • Docker安装部署Mysql8(以作数据持久化)

    1.创建容器并进行持久化处理 #拉取镜像 docker pull mysql:8.0.20 #启动镜像,用于拷贝配置文件到宿主机 docker run -p 3306:3306 -…

    数据库 2023年6月11日
    0142
  • StoneDB社区答疑第一期

    当然,目前 StoneDB 的社区建设还正处于初启阶段,我们坚信,开源项目的成长,最终还是要靠社区用户一起来共创,因此,StoneDB 开源社区非常重视社区用户的声音,在 7 月份…

    数据库 2023年5月24日
    0117
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球