MySql架构
一、我们来看一个结构大致图形
二、MySql逻辑架构-连接层
当Mysql启动时候(Mysql服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器就创建一个线程来处理,
(如果是线程池的话,则是分配一个空的线程),每个线程独立,拥有各自的内存空间,但是,如果这个请求只是查询的话,没关系,;
但是若是修改数据,很显然,当两个线程修改同一块数据的时候,会引发数据同步问题;
三、MySql逻辑架构-SQL处理层
四、MySql逻辑架构-SQL处理层
1. 主要功能:
SQL语句的解析、优化、缓存查询、Mysql内置函数的实现,跨存储引擎功能(所谓跨存储引擎就是说每个引擎都是需要提供的功能(引擎需要对外提供接口)),例如:存储过程、触发器、试图等;
2. 实现步骤:
2.1 如果是查询语句(select语句)
首先会查询缓存是否已经有相应的结果,有则返回结果,无则进行下一步
2.2 解析查询:
创建一个内部数据结构(解析树),这个解析树主要用来SQL语句与语法的解析;
2.3 优化:
优化SQL语句,例如重写查询,决定表的读取书序,以及选择需要的索引等。这一个阶段用户是可以查询的,查询服务器优化器是如何进行优化的,便于用户重构查询和修改相关配置,达到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等;