风之所向,吾之所往

GEEK

极客——次时代博客

控制台

MySQL基础架构

架构示意图

Server层

连接器

  • 建立连接

    • 长连接

      • 建立连接的过程比较复杂,应该减少建立连接的动作,尽量使用长连接

      • 全部启用长连接后可能会导致内存占用过高

        • 定期断开长连接
        • MySQL 5.7或更高的版本,可以在每次执行一个较大的操作后。通过执行mysql_rest_connection来重新初始化连接资源
    • 短连接

  • 获取权限

  • 维持和管理连接

查询缓存

  • 在内存中,key-value形式保存之前执行过的查询语句

    • 存在于缓存中则直接返回结果
    • 不存在则继续向下执行
  • 不建议使用的原因

    • 失效频繁

      • 对于一个表进行更新,该表的缓存将被全部清除
      • 对于更新频繁的表,命中率会很低
  • 按需使用

    • query_cache_type设置为DEMAND

      • 对于常规语句将不进行缓存

      • 使用SQL_CACHE对特殊语句进行有选择性的缓存

        • mysql> select SQL_CACHE * from T where ID=10;

分析器

  • 对SQL语句进行分析

    • 词法分析
    • 语法分析

优化器

  • 索引的选择
  • 存在多表关联时,决定表的关联顺序

执行器

  • 执行语句

    • 检查权限
    • 打开表
    • 找到对应的引擎接口
    • 遍历表的每一行,进行判断
    • 将符合结果的数据行假如结果集合
    • 遍历完成,返回结果集合

存储引擎层

负责数据的存储与提取

  • InnoDB

    • 从MySQL5.5开始成为默认的存储引擎
  • MyISAM

  • Memory

参考资料

极客时间 MySQL45讲

0
0

发表评论

昵称:

评论内容: