MySql数据库架构
网络连接层:提供与mysql服务器建立连接的支持,负责连接管理、授权认证、安全等。
核心服务层:主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和查询缓存六个部分。
存储引擎层:负责Mysql中数据的存储与提取,与底层系统文件进行交互。
文件系统层:负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,是文件的物理存储层。
一、网络连接层
当客户端尝试与MySQL建立连接时,MySQL就会派发一个线程来对接这个客户端,来负责处理这个客户端接下来的所有工作。
数据库连接层的工作就是负责所有客户端的连接工作。MySQL的连接一般都是基于TCP/IP协议的连接。
二、SQL层(核心服务层)
功能:主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和查询缓存六个部分。
管理服务和工具组件:从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等方面对数据库进行管理。
连接池:负责存储管理客户端与数据库的连接、一个线程负责管理一个连接。
SQL接口:用户SQL命令的接口;进行DML、DDL语句、存储过程、视图、触发器等操作和管理。
解析器:对词汇语义、语法、SQL权限的检测、以及对代码的解析与验证。
查询优化器:对SQL语句查询进行优化、选取。SQL查询语句中有多种执行方式,优化器会对查询代码进行最优化的选取方式来进行查询。
缓存和缓冲区:主要分为了读取缓存与写入缓冲,读取缓存主要是指select语句的数据缓存,当然也会包含一些权限缓存、引擎缓存等信息。MySQL会对经常查询的语句保存在cache中,这样在下次查询时,能够直接使用。
三、存储引擎
InnoDB:支持事务,并且提供行级的锁定。
MyISAM:查询速度快,有较好的索引优化和数据压缩技术。缺点就是不支持事务。
Memory:适合存储临时数据。HEAP存储引擎,数据保存在内存中。支持HASH索引和BTree索引。不支持支持Blog和Text等大字段。
Archive:适合存储历史数据。以zilb压缩表数据。
四、物理文件层
文件系统层是MySQL的基础,是基于物理磁盘的一个文件系统。支持NTFS、UFS、ext2/3、NFS、NAS等文件类型。该文件系统包含了数据文件、日志文件、配置文件、索引文件等各类MySQL运行时所需要的文件。