likes
comments
collection
share

MySQL调优笔记(一)基础架构

作者站长头像
站长
· 阅读数 18

基础架构

MySQL调优笔记(一)基础架构

客户端

Server层

  1. 连接器
  • 管理连接,连接命令

    mysql -h127.0.0.1 -P3306 -uroot -p
  • 权限校验
  • 一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。
  • mysql数据库(系统数据库)下的表:user、db、tables_priv、columns_priv、proce_priv、proxies_priv共同构成授权表。
  1. 查询缓存
  • 执行的语句及其结果会以 key-value 对的形式,被直接缓存在内存中。

    #设置query_cache_type = DEMAND
    select SQL_CACHE * from T where id=1;
  1. 分析器
  • 词法分析,语法分析。分析器先会做“词法分析”。你输入的是由多个字符串和空格组成的一条 SQL 语句,MySQL 需要识别出里面的字符串分别是什么,代表什么。做完了这些识别以后,就要做“语法分析”。根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。
  1. 优化器
  • 执行计划生成,索引选择。优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
  1. 执行器
  • 操作引擎,返回结果。开始执行的时候,要先判断一下你对这个表 table 有没有执行查询的权限,如果没有,就会返回没有权限的错误;如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。

存储引擎(//TODO索引详解)

  • innodb
  • myisam
  • memory usage

总结

本章介绍了 MySQL 的逻辑架构,希望读者对一个SQL语句完整执行流程的各个阶段有了一个初步的概念。