MySQL体系结构
MySQL的体系结构可分为:MySQL server层和存储引擎层。
MySQL server又分为连接层和sql层。应用程序通过接口(如ODBC、JDBC)连接MySQL。
- 最先连接处理的是连接层,连接层包括通信协议、线程处理和用户名密码认证三部分:
- 通信协议用来检测客户端版本是否兼容MySQL服务端。
- 线程处理是指每个连接请求都会分配一个对应的线程,相对于一条sql对应一个线程,而一个线程对应一个CPU,并会在多个逻辑CPU之间进行切换。
- 用户名密码认证验证创建的账号和密码以及host主机授权是否可以连接到服务端。
- sql层包含权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划。
- 权限判断审核用户有没有访问某个库、某个表,或者表里某行的权限;
- 查询缓存通过Query Cache进行操作,如果数据在query cache中,则直接返回结果给客户端;
- 查询解析器针对sql语句进行解析判断语法是否正确;
- 预处理器对解析器无法解析的语义进行处理;
- 优化器对sql进行改写和相应的优化,并生成最优的执行计划,就可以调用程序的API接口,通过存储引擎访问数据。
存储引擎层是MySQL区别于其他数据库最核心的一点。