世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。 ——摘自周志明

mysql逻辑架构

逻辑架构图

  MySQL有点与众不同,它的逻辑架构可以在多种不同的场景中应用并发挥良好的作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储提取相分离。这种架构可以根据业务需求和实际需要选择合适的存储引擎。

    

1、连接层

  最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

2、服务层

  2.1 Management Serveices & Utilities: 系统管理和控制工具  

  2.2 SQL Interface: SQL接口

    接受用户的SQL命令,并且返回用户需要查询的结果。比如select 就是调用SQL Interface,但是会先到Caches中查找是否有缓存,没有才调用此接口。

  2.3 Parser:解析器

    SQL命令传递到解析器的时候会被解析器验证解析

  2.4 Optimizer:查询优化器

    在SQl查询语句执行之前,优化器会优化SQL,它的原则是保持查询结果不变。

  2.5Cache和Buffer:查询缓存

    在执行查询SQL时,查询语句直接去查询缓存中查看是否有缓存,有则直接取数据返回。

3、引擎层

  真正负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎功能不一样,例如MyISAM和InnoDB.

4、存储层

   数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。

  裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊块设备文件。由应用程序负责对它进行读写操作。不经过文件系统的缓冲。它是不被操作系统直接管理的设备。这种设备少了操作系统这一层,I/O效率更高。不少数据库都能通过使用裸设备作为存储介质来提高I/O效率。

posted @ 2019-01-24 17:23  白杯与咖啡  阅读(172)  评论(0编辑  收藏  举报