MySQL逻辑架构图
Posted MC_Hotdog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL逻辑架构图相关的知识,希望对你有一定的参考价值。
大概流程
1)mysql启动以后,初始化模块就从系统配置文件中读取系统参数和命令参数,初始化整个系统,同时存储引擎也会启动;
2)初始化结束后,连接管理模块会监听客户端的连接请求,并将连接请求转发给线程管理模块去请求一个连接线程;
3)线程模块接到请求后会调用用户模块进行授权检查,通过授权以后会检查是否又空闲线程,如果有取出并与客户端连接,如果没有则新建立建立一个线程与客户端连接;
4)mysql请求分为两种,一种是需要命令解析和分发才能执行,另一种可以直接执行;不管哪种,如果开启了日志,那么日志模块会记录日志;
5)如果是Query类型的请求,会将控制权交给Query解析器,Query解析器检查是否Select类型,如果是则启动查询缓存模块,如果缓存命中则将缓存数据返回给连接线程模块,连接线程将数据传递到客户端;如果没有缓存或者不是一个可以缓存的查询,此时解析器会进行相应的处理,通过查询分发器给相关的处理模块;
6)如果解析器结果是DML/DDL,则交给变更模块;如果是检查、修复的查询交给表维护模块,如果是一条没有被缓存的语句,则交给查询优化器模块。实际上表变更模块又分为若干小模块,例如:insert处理器、delete处理器、update处理器、create处理器,以及alter处理器这些小模块来负责不同的DML和DDL。总之,查询优化器、表变更模块、表维护模块、复制模块、状态模块都是根据命令解析器的结果不同而分发给不同的类型模块,最后和存储引擎进行交互。
7)当一条命令执行完毕后,控制权都会还给连接线程模块,在上面各个模块处理过程中都依赖于核心API模块,比如:内存管理、文件I/O,字符串处理等。
连接层
最上层是一些客服端和连接服务,包括sock通信和大多数基于客服端/服务端工具实现的类似于tcp/ip的通信,主要完成一些类似于连接处理、授权认证及相关安全的方案,在该层上引入了线程池的概念,为通过认证安全接入的客服端提供线程,同样在该层上可以实现基于SSL的安全的连接,服务器也会为安全接入的每个客户端验证它所具有的操作权限。
服务层
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析以及优化部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程、函数等,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询的顺序是否利用索引,最后生成相应的执行操作。
引擎层
存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有功能不同
1 # 编码 2 show variables like \'%char%\'; 3 +--------------------------------------+----------------------------+ 4 | Variable_name | Value | 5 +--------------------------------------+----------------------------+ 6 | character_set_client | utf8 | 7 | character_set_connection | utf8 | 8 | character_set_database | latin1 | 9 | character_set_filesystem | binary | 10 | character_set_results | utf8 | 11 | character_set_server | latin1 | 12 | character_set_system | utf8 | 13 | character_sets_dir | /usr/share/mysql/charsets/ | 14 | validate_password_special_char_count | 1 | 15 +--------------------------------------+----------------------------+ 16 9 rows in set (0.01 sec) 17 引擎 18 show engines; 19 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 20 | Engine | Support | Comment | Transactions | XA | Savepoints | 21 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 22 | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | 23 | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | 24 | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | 25 | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | 26 | MyISAM | YES | MyISAM storage engine | NO | NO | NO | 27 | CSV | YES | CSV storage engine | NO | NO | NO | 28 | ARCHIVE | YES | Archive storage engine | NO | NO | NO | 29 | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | 30 | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | 31 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 32 9 rows in set (0.00 sec) 33 34 show variables like \'%storage_engine%\';
存储层
数据存储层主要是将数据存储在运行与裸设备的文件系统之上,丙烷层与存储引擎的交互
以上是关于MySQL逻辑架构图的主要内容,如果未能解决你的问题,请参考以下文章