从https://www.mysql.com/common/images/PSEA_diagram.jpg 官网获取mysql server体系架构图
各组件含有:
- connectors: 支持不同语言与mysql 客户端进行交互的组建。
- connection pool: 验证并管理缓冲用户连接和线程处理等。
- sql interface: mysql 接口,执行用户发来的查询语句,并返回结果。
- parser: sql解析器,解析验证sql语句,生成后续步骤使用的数据结构或者返回语法错误。
- optimizer: sql优化器,根据sql语句生成最优路径。
- caches & buffers:缓存和缓冲, qc,表缓存和权限缓存等。
- pluggable storage engines: 插件式存储引擎,是mysql中具体与文件系统打交道的子系统。
- files & logs: 包括个引擎的数据、索引文件,日志文件等。
- files system: 用于对存储设备的空间进行组织和分配。
当一个查询来临时:
1)mysql客户端对服务端监听端口发起请求
2)在sql connector层创建链接,分配线程,并验证用户名密码和权限等
3)若query_cache使能,则查询缓存,有则返回,无则继续
4)sql interface接收sql语句,验证并分解,失败则返回错误,成功则继续
5)sql optimizer优化sql语句,返回最优查询路径
6)调用存储引擎接口,打开表,进行查询。检查存储引擎缓存中有无缓存,有则返回,无则继续。
7)到磁盘文件中查找数据
8)查找到数据后先存入存储引擎缓存,如果query_cache使能,则再写入query_cache
9)返回数据给客户端,关闭表,关闭线程,关闭链接