zoukankan      html  css  js  c++  java
  • MySQL查询(二)

    MySQL架构

    逻辑架构图

    MySQL执行流程图

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

    Service:

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

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

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

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

    次调用。不建议使用缓存

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

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

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

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

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

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

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

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

    返回接口执行的结果。

    存储引擎层:

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

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

     

    MySQL索引

      什么是索引?

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

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

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

    索引分类:

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

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

    索引的使用

    创建索引

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

    修改索引

    alter table tableName add index indexName(columnName)

    删除索引

    drop index indexName on tableName

     

     

     

     

  • 相关阅读:
    【STM32H7的DSP教程】第13章 DSP快速计算函数-三角函数和平方根
    【STM32F429的DSP教程】第13章 DSP快速计算函数-三角函数和平方根
    【STM32F407的DSP教程】第13章 DSP快速计算函数-三角函数和平方根
    分布式锁--redis(单节点)
    Lock
    Condition
    Synchronized
    并发线程池
    多线程实现原理
    多线程基础
  • 原文地址:https://www.cnblogs.com/limengcheng/p/12109002.html
Copyright © 2011-2022 走看看