一条 SQL 查询语句是如何执行的?

基础架构

MySQL 基础架构分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等大多数核心服务。存储引擎层负责数据的存储和提取,支持 MyISAM、InnoDB 等引擎。

执行一条 SQL 查询语句时,

  • 先用连接器跟客户端建立连接。
  • 然后,查询缓存,如果命中就直接返回结果。
  • 如果不命中,就用分析器对 SQL 语句进行分析。
  • 然后,用优化器制定执行方案,比如从表的多个索引中选择一个最合适的。
  • 最后,执行器执行,返回结果,由存储引擎存储,提供读写。

更新流程跟查询类似,不过更新还涉及 redo log 和 binlog 两个日志。

存储引擎

MyISAM 和 InnoDB,区别在于:

  • MyISAM:特点是索引文件和数据文件分开,可以缓存更多索引,查询效率较高。
    缺点是不支持事务、外键,使用表锁。适用于读多写少的低并发场景。
  • InnoDB:是 MySQL 5.5 后的默认存储引擎。基于聚簇索引建立,特点是支持事务、外键,使用行锁和 MVCC 提高了并发效率,适用于高并发场景。
posted @ 2021-11-15 10:35  ayuecoding  阅读(73)  评论(0)    收藏  举报