开发者学堂课程【MySQL 实操课程:MySQL 数据库架构】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/717/detail/12797
MySQL数据库架构
一、介绍 mysql 数据库架构
从这张图可以看到最上方 Connectors ,也就是 MySQL 客户端的一些语言、工具。
数据库是应用系统里面必不可少的工具,因为应用系统肯定是要存在数据的存储与查询,那么应用系统运用这些不同的开发语言,开发语言里面加载数据驱动,执行对数据库的操作,这就是应用系统和数据库打交道的桥梁。
MySQL 本身第一大块包含了 Server ,下方是存储引擎,存储引擎主要解决了数据怎么样存放的问题,以及索引怎么样对数据进行归类的问题。
MySQL Server 层又包含了最上层的连接池(连接层),连接池主要是包含了认证、线程分配、连接限制、内存检查和缓存。
连接层主要做三部分的工作:
1、印证客户端在通信协议层面是否兼容 MySQL 服务端。
2、每一次链接,每一次请求,MySQL 连接池会分配一个单独的线程进行处理,也就是逻辑上分配了一个独立的 CPU 处理这一次的请求。
3、认证当前链接用户是否属于 MySQL 合法用户。
下方就是 SQL 层,结果上面链接池用户的认证,进行授权,也就是 SQL 里面涉及到的库、表有没有访问的权限,是通过 SQL 层里面的权限判断处理的。
当 SQL 经过权限判断,不会立马到解析器(parser),而是先到缓存(caches&buffers),会在查询缓存里面检测这个 SQL 有没有缓存过,如果在查询缓存里面被查到,那么会直接通过查询缓存里面提取出来。
如果没有查到,才回到解析器,这个解析器主要是针对 SQL 语句进行语法的检查,判断语法是否正确。
解析器对语法解析之后,进入到查询优化器(optimizer)对 SQL 进行改写并且做相应的优化,生成最优的执行计划,调用应用程序与 API 接口通过存储引擎访问数据。