MySQL (二)

时间:2021-09-15 04:38:52

MySQL架构

逻辑架构图

MySQL (二)

MySQL执行流程图

MySQL (二)

MySQL主要分为Server层和存储引擎层

Service:

        连接器:主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作

查询缓存:建立连接,执行查询语句,会先查询缓存,Mysql会先校验这个sql是否执行过,以

值的形式缓存在内存中,是查询预计,是结果集。如果缓存被命中,就会直接返

回给客户端,如果没有命中,就会执行后续的操作,完成后也会把结果缓存起来,方便下一

次调用。不建议使用缓存

分析器:mysql 没有命中缓存,那么就会进入分析器.

第一步,词法分析,一条SQL语句有多个字符串组成,首先要提取关键字,比如select

提出查询的表,提出字段名,提出查询条件等等。做完这些操作后,就会进入第二步。

第二步,语法分析,主要就是判断你输入的sql是否正确,是否符合mysql的语法。

优化器:优化器的作用就是它认为的最优的执行方案去执行(虽然有时候也不是最优),比

    如多个索引的时候该如何选择索引,多表查询的时候如何选择关联顺序等

执行器:当选择了执行方案后,mysql就准备开始执行了,首先执行前会校验该用户有没有

     权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,

返回接口执行的结果。

存储引擎层:

  主要负责数据的存储和读取,采用可以替换的插件式架构,支持InnoDBMyISAM

Memory等多个存储引擎,其中InnoDB引擎有自有的日志模块redolog 模块

 

MySQL (二)

MySQL索引

  什么是索引?

      索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含

着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,

能加快数据库的查询速度。

索引分类:

①单列索引:一个索引只包含单个列,一个表可以有多个单列索引

②组合索引:一个索引包含多个列

索引的使用

创建索引

create index indecName on tableName(userName(length))’

修改索引

alter table tableName add index indexName(columnName)

删除索引

drop index indexName on tableName