查询请求执行过程图(服务器程序处理来自客户端的查询请求过程图)
划分
1、server层:
连接管理、查询缓存、语法解析、查询优化,这些并不涉及真实数据的存取,这部分功能划分为server层的功能。
2、存储引擎层:
将存取真实数据的功能划为存储引擎层的功能。
各种不同的存储引擎为server层提供统一的调用接口。
在server层完成了查询优化之后,只需按照生成的执行计划调用底层存储引擎提供的接口,获取到数据后返回给客户端就行了。
server层和存储引擎层交互时,一般是以记录(数据)为单位的。
连接管理
1、建立连接的方式
a.TCP/IP连接
b.命名管道或共享内存式连接
c.UNIX域套接字
解析与优化
1、查询缓存
从mysql5.7.20版本开始不再推荐使用查询缓存,在mysql8.0以后的版本中直接将其删除了
2、语法解析
3、查询优化
存储引擎
1、别名:表处理器
2、功能:接收server层传下来的指令,然后对表中的数据进行读取和写入操作,将结果返回给客户端
3、不同存储引擎管理的表有不同的存储结构、采用的存取算法也不一样
4、种类:
ARCHIVE
BLACKHOLE
CSV
FEDERATED
InnoDB
MEMORY(比如临时表)
MERGE
MyISAM
NDB
5、mysql5.5.5版本以后,默认都是InnoDB存储引擎
6、查看服务器支持的存储引擎:
SHOW ENGINES;
7、设置表的存储引擎:
# 创建表时指定表的存储引擎类型
CREATE TABLE table_name (...column infos...) ENGINE = 存储引擎名称;
# 修改已创建的表的存储引擎类型
ALTER TABLE table_name ENGINE = 存储引擎名称;
InnoDB与MyISAM的差异 |
---|
1、InnoDB支持Data Caches |
2、InnoDB支持Foreign Key |
3、所颗粒性(Locking granularity):InnoDB是行;MyISAM是表 |
4、InnoDB支持MVCC(多版本并发控制:Multi Version Concurrency Control) |
5、存储限制:InnoDB是64TB;MyISAM是256TB |
6、InnoDB支持事务(Transactions) |