Mysql逻辑架构

      Mysql各个组件之间如何协作,有助于深入理解MySql服务器。

      第一层,服务层:为客户端提供服务,如连接处理,授权认证、安全等。

      第二层,核心层:MySql的核心服务都在这一层。包括查询解析,分析、优化、缓存,提供内置函数、存储过程、触发器、视图。

      第三层,存储引擎:数据的存储和提取。响应上层服务器的请求。

      

一、线程处理

       ①每个客户端连接(可以是客户端工具的一个连接或应用程序创建的一个连接)都会对应一个单独的线程。该连接的查询操作只会在这个单独的线程中执行。该线程只能轮流在某个CPU核心或者CPU中运行

       ②服务器端有线程缓存和线程池(mysql5.6才有线程池),所以并不需要为每个新的连接创建线程。

二、优化与执行

       

     上图是一个简化版的查询优化。

     ①客户端发送一条查询给服务器

     ②服务器通过权限检查之后(用户名和密码等),先检查查询缓存,如果命中了缓存,立即返回缓存中的数据。否则进入下一阶段。

     ③服务器端进行SQL解析,预处理(词法、语法分析)再由又花钱生成对应的执行计划。

     ④根据优化器生成的执行计划,调用存储引擎的API来执行查询。

     ⑤将结果返回给客户端。

       下图才是完整版的查询优化。

      



猜你喜欢

转载自blog.csdn.net/qq_26545305/article/details/79674881
今日推荐