乐趣区

重学MySql笔记一

前言

工作以来用 Mysql 的频率非常高,越来越觉得自己 MySql 的基础知识非常差,故重学一下 Mysql,顺便做下笔记和总结,文章所涉及内容及资料均来自极客时间《SQL 必知必会》专栏,有兴趣的同鞋可自行购买,小弟就不贴推广链接了~

基础概念定义

按照 SQL 语言可以划分 4 个部分:
1、DDL(Data Definition Language),用来定义数据库对象,数据表和列。使用 DDL 创建,删除,修改数据库和表的结构;
2、DML(Database Manipulation Language),数据库操作语言,操作数据库的相关数据,比如增加,删除,修改表中的数据;
3、DCL(Data Control Language),数据控制语言,用它来定义访问权限和安全等级;
4、DQL(Data Query Language),数据查询语言,用它来查询数据;

Mysql 架构

Mysql 是 Client/Server 架构,体系架构图如下:

由以下几个部分组成:

  1. 连接池组建 (Connection Pool)
  2. 管理服务和工具组建 (Enterprise Management Services & Utilities)
  3. SQL 接口组件(SQL Interface)
  4. 查询分析器(Parser)
  5. 优化器组件(Optimizer)
  6. 缓冲组件(Cache & Buffer)
  7. 插件式存储引擎(Pluggable Storage Engines)
  8. 物理文件(File System , Files & Logs)

存储引擎

  1. InnoDB 存储引擎:Mysql 5.5 版本后默认的存储引擎,优点是支持事务,行级锁,外键约束,支持崩溃后的安全恢复;
  2. MyISAM 存储引擎:不支持事务和外键,支持全文索引(但只对英文有效),特点是查询速度快;
  3. Memory 存储引擎:数据放在内存当中(类似 memcache)以便得到更快的响应速度,但是崩掉的话数据会丢失;
  4. NDB 存储引擎:主要用于 Mysql Cluster 分布式集群;
  5. Archive 存储引擎:有很好的压缩机制,用于文件归档,写入时会进行压缩;

Sql 语句的执行流程

MySQL 中的流程是:SQL 语句→缓存查询→解析器→优化器→执行器。

  1. 查询缓存:Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端;如果没有,就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在 MySQL8.0 之后就抛弃了这个功能。
  2. 解析器:在解析器中对 SQL 语句进行语法分析、语义分析。
  3. 优化器:在优化器中会确定 SQL 语句的执行路径,比如是根据全表检索,还是根据索引来检索等。
  4. 执行器:在执行之前需要判断该用户是否具备权限,如果具备权限就执行 SQL 查询并返回结果。在 MySQL8.0 以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存。
退出移动版