MySQL面试高频之逻辑架构(1)

41 阅读2分钟

MySQL面试高频之逻辑架构(1)

一条SQL的执行过程

  1. 查询缓存:如果缓存中有这条SQL,则直接从缓存中将SQL语句的结果返回

    1. 缓存的命中率很低,8.0后缓存已被弃用

    2. 缓存鸡肋的原因

      • 缓存中的SQL语句必须完全一致才能匹配成功
      • 对数据操作后,缓存极易失效
  2. 解析器:对SQL进行词法分析和语法分析

    1. 词法分析:识别出SQL语句中的关键字,例如selectid
    2. 语法分析:检查SQL语句是否符合语法规范
  3. 优化器:优化阶段可以分为逻辑查询优化阶段和物理查询优化阶段

    1. 在优化器中确定SQL语句执行的路径,例如是进行全表查询,还是进行索引查询
  4. 执行器:调用存储引擎的API,根据查询计划进行查询

总结一条SQL的执行过程:

  • SQL语句 ---> 查询缓存 ---> 解析器 ---> 优化器 ---> 执行器

存储引擎

InnoDB引擎:具备外键支持功能的事务存储引擎

  • InnoDB是MySQL默认事务型引擎,它被设计用来处理大量短期事务,确保事务的提交(commit)和回滚(rollback)
  • 除了增加和查询外,还要删除和更改操作,则应选择InnoDB引擎
  • InnoDB擅长处理巨大数据量
  • 在InnoDB引擎中,索引即数据,因此 内存 要求高,内存的大小对性能有决定性影响

MyISAM引擎:主要的非事务处理存储引擎

  • MyISAM提供了大量的特性,包括全文索引、压缩、空间函数等
  • 5.5之前是默认的存储引擎
  • 优势是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用

MyISAM和InnoDB