MySQL 概念
MySQL 数据库
MySQL 是一种关系型数据库。开源免费,并且方便扩展。在 Java 开发中常用于保存和管理数据。默认端口号 3306。
MySQL 数据库主要分为 Server 和存储引擎两部分,现在最常用的存储引擎是 InnoDB。
指令执行过程
MySQL 数据库接收到用户指令后,首先由 Server 负责对数据操作的分析、处理和优化,再交给存储引擎执行数据存取操作。
连接器
连接器负责用户登录数据库时的身份认证,校验账户密码。校验通过后连接器会连接到权限表,并读取该用户的所有权限。如果连接未断开,即使该用户权限被管理员修改也不受影响。
查询缓存
缓存 SELECT 语句以及返回的结果。收到查询语句会首先和缓存比对,如果相同就直接从查询缓存里返回数据。
更新表后,这个表上的所有的查询缓存都会被清空。这导致实际使用场景中查询缓存的作用非常少,在 MySQL 8.0 版本后移除。
分析器
如果查询语句未命中缓存,或者是更新语句,那么将由分析器负责分析 SQL 语句的用途。
- 词法分析:提取关键字,提取 SQL 语句的关键元素,明确 SQL 语句的功能。
- 语法分析:判断 SQL 语句是否正确,是否符合 MySQL 的语法。如果不符合语法则返回错误信息。
优化器
明确 SQL 语句功能后,由优化器负责选择尽可能最优的执行方案。比如多个索引的时候选择索引,多表查询的时候选择关联顺序。
执行器
确定执行方案后,由执行器负责校验该用户有没有权限,并交由存储引擎执行语句,然后从存储引擎返回数据。