大体来说, mysql可以氛围server层和存储引擎层 两部分
逻辑架构图
image.png
存储引擎层
负责数据的存储和提取,架构模式是插件式的
支持innodb, myisam, memory..., MySQL5.5.5 以后默认innodb,不同存储引擎的表数据存取方式也不同
不同的存储引擎共用一个server层,也就是连接器到执行器的部分
server层
包括连接器,查询缓存,分析器, 优化器...失效频繁, 只要对一个表更新, 这个表上所有的查询缓存都会被清空, 这对于更新压力大的数据库来说, 查询缓存的命中率会很低
按需使用, 可以将参数query_cache_type设置为DEMAND, 这样默认不是用缓存查询...分析器
如果查询缓存未命中,就开始执行真正的语句了,第一步就是解析sql语句
mysql需要识别出里面的字符串分别是什么, 代表着什么
识别:mysql从你输入的select这个关键字识别出这是个查询语句...执行器将上述结果集返回给客户端
对于有索引的表,执行逻辑基本也就这样,第一次调用的是"取满足条件的第一行", 后续调用的是"满足条件的下一行", 这些接口引擎中已经定义好了
数据库慢查询日志中有rows_examined