MySQL 基础架构

MySQL 共分为两大块

  • server 层


    • 连接器
      • 查看数据库链接的状态 默认无动作 [此参数由wait_timeout 控制] 八小时后断开链接

      • 长连接会使 MySQL 占用的内存越来越多 , 会在断开链接的时候释放 , MySQL5.7 之后的版本可以使用 mysql_reset_connection 来初始化链接资源 , 不需要重新登录 , 不需要重新验证权限(登录之后如果权限被修改, 会在下次登录生效) , 但是会将链接恢复到刚刚开始的状态 .

      • 尽量减少建立链接动作 , 使用长连接

          show processlist;                                                                     
          show global variables like '%wait_timeout%';
          set global wait_timeout = 28800;                          
        

    • 查询缓存
      • 每次执行 SQL 结果都会缓存在内存中 , key=SQL , vlaue=结果 , 如果下次查询匹配到了, 就直接返回 , 否则查询结果缓存并返回
      • 其实利大于弊 , 表的更新会清空所有缓存 , query_cache_type = DEMAND 可以使SQL 默认不缓存 , 此功能在 MySQL8.0已经彻底移除
    • 分析器
      • 词法分析 , 识别关键词 , 表名 , 字段名等 , 然后做语法分析 , 是否满足 MySQL 规则
    • 优化器
      • 决定用什么索引 , 如果连表查询(顺序) 选择最优方案
    • 执行器
      • 检查执行权限 , 执行 SQL
      • 查看数据库慢日志 rows_examined 字段记录了某个 sql扫描的行数


        MySQL 基础架构_第1张图片
        image

你可能感兴趣的:(MySQL 基础架构)