MySQL的分层逻辑架构


MySQL是一个开源的关系型数据库产品,采用处理与存储分离的设计,灵活性高

今天来了解一下服务内部的逻辑结构

MySQL逻辑分层,首先可以把服务端想想成一个大的容器,里面有四层结构,当一个请求过来的时候,将会执行这四层,执行一遍后才会返回给我们想要的结果。

连接层

当客户端发送与一个select是直接交给连接层来处理,而它的作用就是提供与客户端连接的服务,连接层只是与客户端建立起连接,完成一些类似链接处理,授权认证及相关的安全方案,在该层上引入了连接池的概念

服务层

提供核心的服务功能,如SQL接口,完成缓存的查询,SQL的分析和优化部分及内置函数的执行

备份、安全、复制、集群
存储过程、视图、触发器
Parser解析、查询事务、对象权限
Optimizer优化器

优化器的主要作用就是为待执行的sql语句找到最优的执行计划。也就是mysql会在我们执行每条sql语句的时候,自动为我们找到它认为的最佳方案。这个最佳方案是通过一定的原则,对比使用不同索引的查询行数总数,查询开销对比,选择出最小的方案

Cache Buffers

缓存、服务器会查询内部的缓存,如果缓存空间足够大,这样可以解决大量读操作的环境中,能够很好的提升系统性能

引擎层

存储引擎是真正负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎提供的功能不同,可以根据自己实际需求来选取

常见的有:InnoDB、MyISAM、Memory

 原理
InnoDB 设计的时候:事务优先行锁,每条数据都要锁,锁的太多,性能降低,但是适合并发高
MyISAM 性能优先因为是 表锁,对于表里十条数据来说是不受影响的
Memory 特殊使用存储在内存中的内容来穿件表,数据在内存中,优劣明显

存储层

主要是将数据存储在运行的计算机文件系统之上,并完成与存储引擎的交互

整体执行流程

1.首先客户端发出一个Select操作

2.连接层接收后给服务层

3.服务层对你的查询进行一个优化

并把优化结果给引擎层

4.选择当前数据库的引擎,选完引擎后

引擎将最终的数据交给了存储层

5.存储层,用存储层来存数据

  #MySQL 

« 简单粗暴安装黑苹果 聊一聊线程池 »