共计 737 个字符,预计需要花费 2 分钟才能阅读完成。
基础架构
客户端
Server 层
- 连接器
-
治理连贯,连贯命令
mysql -h127.0.0.1 -P3306 -uroot -p
- 权限校验
- 一个用户胜利建设连贯后,即便你用管理员账号对这个用户的权限做了批改,也不会影响曾经存在连贯的权限。批改实现后,只有再新建的连贯才会应用新的权限设置。
- mysql 数据库 (零碎数据库) 下的表:user、db、tables_priv、columns_priv、proce_priv、proxies_priv 独特形成受权表。
- 查问缓存
-
执行的语句及其后果会以 key-value 对的模式,被间接缓存在内存中。
# 设置 query_cache_type = DEMAND select SQL_CACHE * from T where id=1;
- 分析器
- 词法剖析,语法分析。
分析器先会做“词法剖析”。你输出的是由多个字符串和空格组成的一条 SQL 语句,MySQL 须要辨认出外面的字符串别离是什么,代表什么。
做完了这些辨认当前,就要做“语法分析”。依据词法剖析的后果,语法分析器会依据语法规定,判断你输出的这个 SQL 语句是否满足 MySQL 语法。
- 优化器
- 执行打算生成,索引抉择。
优化器是在表外面有多个索引的时候,决定应用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连贯程序。
- 执行器
- 操作引擎,返回后果。
开始执行的时候,要先判断一下你对这个表 table 有没有执行查问的权限,如果没有,就会返回没有权限的谬误;
如果有权限,就关上表继续执行。关上表的时候,执行器就会依据表的引擎定义,去应用这个引擎提供的接口。
存储引擎(//TODO 索引详解)
- innodb
- myisam
- memory usage
总结
本章介绍了 MySQL 的逻辑架构,心愿读者对一个 SQL 语句残缺执行流程的各个阶段有了一个初步的概念。
正文完