MySQL学习笔记一
jwenjian opened this issue · 0 comments
jwenjian commented
最近在补极客时间的MySQL课程,会从这篇文章开始记录学习笔记。
-
MySQL由引擎层和Server层组成
-
引擎层负责数据的存储和提取
-
Server层提供MySQL的核心功能,主要包括
- 连接器
- 查询缓存
- 分析器
- 优化器
- 执行器
等组成。
-
-
连接器负责建立连接,获取权限,维持和管理连接
-
如果查询语句之前已经执行过,那么查询缓存会命中,直接返回上次的执行结果,但不建议开启查询缓存, 因为如果一旦对一个表的数据进行了更新, 那么这个表上的所有查询缓存都会被清空。对于字典表之类的静态表来说查询缓存才会真正发挥它的功力。但是目前我们的程序也基本上都会有Redis等的缓存中间件。所以也不建议单独为了静态表开启查询缓存。
-
分析器的工作是,词法分析和语法分析
- You have an error in your SQL syntax 之类的错误都是在这个阶段抛出来的
-
优化器用来决定当前语句用哪个索引。
- 如果你的SQL语句中有错误(或者未知)的列名,优化器就会抛出“Unknown column name”的错误
-
执行器在执行语句前 会先判断当前用户有没有相关权限 如果没有权限则直接报错返回
类似的错误信息如下:
ERROR 1142 (42000): SELECT command denied to user 'b'@'localhost' for table 'T'
执行器通过调用引擎的接口获取想要的数据并返回