3小时百度收录新站方法,企业文化经典句子,thinkphp商城源码,网站建设平ppt了解mysql的基础架构, 理解大概的实现思想, 更有利与我们知之所以然, 是我们学习mysql起来思路更清晰, 效率更高. 思维导图: mysql 基础架构 mysql基础架构.png 1. 连接器 Mysql作为服务器#xff0c;一个客户端的Sql连接过来就需要分配一个线程进行处理#xff0c;这个线程… 了解mysql的基础架构, 理解大概的实现思想, 更有利与我们知之所以然, 是我们学习mysql起来思路更清晰, 效率更高. 思维导图: mysql 基础架构 mysql基础架构.png 1. 连接器 Mysql作为服务器一个客户端的Sql连接过来就需要分配一个线程进行处理这个线程会专门负责监听请求并读取数据。 这部分的线程和连接管理都是有一个连接器专门负责跟客户端建立连接、权限认证、维持和管理连接。2. 解析器 SQL解析就是按照SQL语法把我们编写的SQL语句进行词法分析理解这个SQL需要做什么事情. 比如如下SQL语句就会被解析器给拆成三步逻辑 select name, age, birthday from user where userId 007;查询user表寻找到userId007的那条数据将数据中的name、age、country字段信息提取出来 3. 优化器 MySQL的优化器主要是将SQL经过语法解析/词法解析后得到的语法树通过MySQL的数据字典和统计信息的内容经过一系列运算从而得出一个执行计划树的构成。之后MySQL按照执行树的要求计算得出结果。 优化器的输入是一个语法树输出是一个执行树也称为执行计划SQL优化器的具体模块参考如下图 mysql优化器.jpg 准备阶段 -- 名称识别主要包括将找到并补全对应语句的表名库名等 -- 语义检查通过数据字典如果找不到对应的表名则直接返回报错 -- 初级语义变换主要是根据语义规则把一些外连接直接转成内连接子查询EXIST转成IN然后IN再转成SEMIJOIN等功能。 逻辑变换 逻辑变换 -- 否定消除对于多个表达式的和取或析取范式前面有否定的情况应将关系条件分解成一个一个的将外面的NOT消除 -- 等值常量传递利用了等值关系的传递特性为了能够尽早执行下推运算后面会讲到 -- 常量表达式计算对于能够立刻计算出结果的表达式直接计算结果并将结果与其他条件尽量提前化简。 代价优化准备 基于代价的优化主要是用来确定对于每个表根据条件是否应用索引应用哪个索引, 确定多表连接的顺序等问题。为了能够进行代价优化需要尝试各种可能的方法从而找到一个代价最小的方法。为了能够比较就需要给定义一个量化指标。 基于代价的优化主要是为了确定采用如下哪一种方法如果当前表存在该功能的条件下 -- 采用哪种索引 一个表可能有主键也可能有外键需要根据条件确定使用哪个索引 -- 确定JOIN顺序不同的JOIN顺序对性能影响极大 -- 确定子查询的执行策略: MySQL执行子查询有相当多的方式, 具体涉及到代价模型, 代价量化方法. 这里先埋个坑, 后续写个文章展开. 4. 执行器 这一步就是根据上一步骤优化器生成的SQL执行方案去调用存储引擎的接口InnoDB、mysam完成SQL语句的执行计划这个SQL引擎操作的有可能是内存数据也有可能是磁盘文件。 补充MySQL 8.0 版本直接将查询缓存的整块功能删掉了日常也不建议开启使用。 文章标签: #MYSQL基础架构 #MYSQL 注部分内容来源于网路和一些学习资料并非本人原著 最后编辑于2025-02-24 21:41:30 © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦