0%

MySQL-优化原理

优化原理

逻辑架构

image

  • 客户端层
  • 核心服务层,包括查询解析、分析、优化、缓存、内置函数、存储过程、试图、触发器等
  • 存储引擎,负责数据存储和提取

查询过程

image

  • 1.客户端向MySQL发送sql查询请求
    半双工通信
  • 2.服务器先检查查询缓存,如果命中则立即返回
    MySQL将缓存存放于一个应用表上(HashMap结构),因此两次查询的字符不同也会导致缓存没有命中,同时查询中包含自定义函数、存储过函数等都不会命中缓存
    查询缓存系统会更重查询中涉及的每个表,如果这些表发生任务变化,跟这个表相关的缓存都会失效,因此会带来性能的损耗
  • 3.服务器进行SQL解析,预处理、再由优化器生成执行计划
    • MySQL通过关键字进行语句解析,并生成对应的解析树
    • 预处理则是根据规则进一步检查解析树是否合法,如数据表或列是否存在
    • MySQL会由优化器生成执行计划,并选择一个成本最小的执行。一条查询可以有多种执行方式,优化器的作用就是找到最好的执行计划
  • 4.根据执行计划,调用存储引擎的API进行查询
    查询执行引擎根据执行计划逐步执行,通过调用存储引擎的接口完成
  • 5.将结果返回客户端并缓存
    缓存的前提是查询缓存被打开,结果集的返回是一个增量的过程。有可能MySQL在生成第一条结果时就返回给客户端,这样服务器就不用存储过多的数据消耗内存