简介:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
目录
MySql结构
MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为两层,即 MySQL Server 层(包括连接层和 SQL 层)与存储引擎层。
注:标识1为连接层,标识2为SQL层
一、连接端
连接端可以将其理解为各种客户端、应用服务,主要指的是不同语言与 SQL 的交互;连接处理、授权认证、安全等功能均在这一层处理。
二、服务层
服务层包括查询解析、分析、优化、缓存、内置函数(比如 : 时间、数学、加密等函数),所有的跨存储引擎的功能也在这一层实现(比如:存储过程、触发器、视图等)。
- 连接层:客户端或者应用程序通过接口(如 ODBC、JDBC)来连接 MySQL,最先连接处理的是连接层;连接层包括通信协议、线程处理、用户名密码认证 3 部分。
- 通信协议负责检测客户端版本是否与服务端 兼容
- 线程处理是指每一个连接请求都会分配一个对应独立的线程
- 用户名密码认证创建的账号和 密码,以及host主机授权是否可以连接到mysql服务器
- SQL层:MySQL 的核心服务都是在这层实现的。主要包含权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划。
- 权限判断可以通过审核用户有没有访问某个库,某个表,或者表里某行的权限
- 查询缓存通过 Query Cache 进行操作,如果数据在 Query Cache 中,则直接返回结果给客户端,不必再进行查询解析、优化和执行等过程
- 查询解析器针对sql语句进行解析,判断语法是否正确,并生成解析器
- 预处理器对解析器无法解析的语义进行处理
- 优化器对sql语句进行改写和相应的优化(例如:对连接表重排序,对外连接转内连接,代数等价 法则,计算和减少常量表达式,自查询优化,早期终结,相等传递等),并生成最优的执行计划,然 后就可以调用程序的API接口,通过存储引擎层访问数据
Management Services & Utilities | MySQL 的系统管理和控制工具,包括备份恢复、MySQL 复制、集群等。 |
SQL Interface(SQL 接口) | 用来接收用户的 SQL 命令,返回用户需要查询的结果。例如 SELECT FROM 就是调用 SQL Interface。 |
Parser(查询解析器) | 在 SQL 命令传递到解析器的时候会被解析器验证和解析,以便 MySQL 优化器可以识别的数据结构或返回 SQL 语句的错误。 |
Optimizer(查询优化器) | SQL 语句在查询之前会使用查询优化器对查询进行优化,同时验证用户是否有权限进行查询,缓存中是否有可用的最新数据。它使用“选取-投影-连接”策略进行查询。 例如 |