重学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架构,体系架构图如下:
由以下几个部分组成:
- 连接池组建 (Connection Pool)
- 管理服务和工具组建 (Enterprise Management Services & Utilities)
- SQL接口组件(SQL Interface)
- 查询分析器(Parser)
- 优化器组件(Optimizer)
- 缓冲组件(Cache & Buffer)
- 插件式存储引擎(Pluggable Storage Engines)
- 物理文件 (File System , Files & Logs)
存储引擎
- InnoDB 存储引擎:Mysql 5.5版本后默认的存储引擎,优点是支持事务,行级锁,外键约束,支持崩溃后的安全恢复;
- MyISAM 存储引擎:不支持事务和外键,支持全文索引(但只对英文有效),特点是查询速度快;
- Memory 存储引擎:数据放在内存当中(类似memcache)以便得到更快的响应速度,但是崩掉的话数据会丢失;
- NDB 存储引擎:主要用于Mysql Cluster分布式集群;
- Archive 存储引擎:有很好的压缩机制,用于文件归档,写入时会进行压缩;
Sql语句的执行流程
MySQL 中的流程是:SQL 语句→缓存查询→解析器→优化器→执行器。
- 查询缓存:Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端;如果没有,就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在 MySQL8.0 之后就抛弃了这个功能。
- 解析器:在解析器中对 SQL 语句进行语法分析、语义分析。
- 优化器:在优化器中会确定 SQL 语句的执行路径,比如是根据全表检索,还是根据索引来检索等。
- 执行器:在执行之前需要判断该用户是否具备权限,如果具备权限就执行 SQL 查询并返回结果。在 MySQL8.0 以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存。
相关推荐
CoderToy 2020-11-16
bianruifeng 2020-11-16
云中舞步 2020-11-12
敏敏张 2020-11-11
暗夜之城 2020-11-11
好记忆也需烂 2020-11-11
Coder技术文摘 2020-09-29
huacuilaifa 2020-10-29
Gexrior 2020-10-22
lpfvip00 2020-10-07
云中舞步 2020-09-11
康慧欣 2020-09-10
ribavnu 2020-11-16
要啥自行车一把梭 2020-11-12
vitasfly 2020-11-12
liuweiq 2020-09-09
emmm00 2020-11-17
王艺强 2020-11-17