数据库
首页 > 数据库> > MySQL45讲学习-基础构架查询和更新一条sql语句

MySQL45讲学习-基础构架查询和更新一条sql语句

作者:互联网

一、基础构架

1.概述

  MySQL 可以分为 Server 层和存储引擎层两部分,Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取,其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎,不同的存储引擎共用一个 Server。

 

 2.Server层

  连接器负责跟客户端建立连接、获取权限、维持和管理连接。

  MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询的语句,value 是查询的结果。如果你的查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端。如果语句不在查询缓存中,就会继续后面的执行阶段。执行完成后,执行结果会被存入查询缓存中。如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。 查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。  

  建议系统配置表上的查询使用查询缓存。

  没有命中查询缓存,需要对 SQL 语句做解析,用到分析器,MySQL 需要识别出里面的字符串分别是什么,代表什么。

  优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。

  执行器阶段,开始执行语句。开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限;有权限之后执行器的执行流程是这样的:

二、一条sql语句如何更新

1.概述

  与查询流程不一样的是,更新流程涉及两个重要的日志模块:redo log(重做日志)和 binlog(归档日志)

2.redo log

 

3.bin log 

4.更新语句两阶段提交(mysql> update T set c=c+1 where ID=2;)

5.总结

标签:binlog,缓存,log,查询,引擎,MySQL45,sql,构架,redo
来源: https://www.cnblogs.com/zhaojunan/p/16593445.html