Mysql各个组件 连接器查询缓存可使用的参数 分析器优化器执行器 连接器 1.连接器用来管理连接和进行权限验证 2.一个用户成功建立连接后,即使用管理员的账号对这个用户的权限进行了修改,也不会影响已经存在连接的权限,新连接才可以用新权限 3.建立连接的过程通常比较复杂,所以尽量使用长连接 4.Mysql执行过程临时使用的内存是管理在连接对象里面的 查询缓存 1.之前执行的结果可能会以key-value对的形式直接缓存在内存中,key是查询的语句,value是查询的结果 2.查询缓存的失效非常频繁,只要有一个对表的更新,这个表上所有的查询缓存都会被清空 可使用的参数 query_cache_type = DEMAND //对于默认的SQL语句都不使用查询缓存 select SQL_CACHE * from T from T where ID = 10 //显式的指定SQL语句使用查询缓存 ------------Mysql8之后就没有查询缓存 我认为没有也行,可以加缓存中间件------------------------ 分析器 1.先做词法分析,识别出里面的字符串分别是什么,代表什么 2.语法分析,判断你输入的词是否满足Mysql语法 优化器 1.优化器是在表里面有多个索引的时候,决定使用哪一个索引,或者在一个语句有多表关联的时候,决定各个表的连接顺序 2.分析器是告诉你应该做什么,优化器是告诉你应该怎么做 执行器 1.用来操作文件系统,执行语句 2.开始执行的时候,会判断你有没有执行的权限,如果没有,就会返回没有权限的错误 3.执行的时候,先取出满足条件的第一行(无索引时取表的第一行),然后循环的取满足条件的下一行