MySQL架构原理及优化

索引原理

架构

逻辑架构

MySQL查询执行过程

执行流程图

  1. 客户端向MySQL服务器发送一条查询请求

  2. 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段

  3. 服务器进行SQL解析、预处理、再由优化器生成对应的执行计划

  4. MySQL根据执行计划,调用存储引擎的API来执行查询

  5. 将结果返回给客户端,同时缓存查询结果

优化

  1. MySQL 不会在非独立列使用索引 ,即 where 后查询条件不能是表达式的一部分不能是函数的参数
  2. 列很成,使用前缀索引 ,节省索引空间,提高索引效率
  3. 多列索引和索引顺序
  • 当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。
  • 当出现多个索引做联合操作时(多个OR条件),对结果集的合并、排序等操作需要耗费大量的CPU和内存资源,特别是当其中的某些索引的选择性不高,需要返回合并大量数据时,查询成本更高。所以这种情况下还不如走全表扫描
  1. 避免多个范围条件,多个范围条件无法同时使用索引 ,即索引失效
  2. 避免索引的冗余与重复
  3. 删除长期未使用的索引
原文地址:https://www.cnblogs.com/luckyCoder/p/12732333.html