《MySQL是怎样运行的》阅读笔记:二

176 阅读2分钟

查询请求执行过程图.jpg 查询请求执行过程图(服务器程序处理来自客户端的查询请求过程图)

划分

1server层:
    连接管理、查询缓存、语法解析、查询优化,这些并不涉及真实数据的存取,这部分功能划分为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)