MYSQL的逻辑架构

预览




mysql 如何判断年月 mysql 时间判断_mysql 如何判断年月

MYSQL的逻辑架构



连接器

连接器模块在MYSQL架构中的作用主要是管理连接和权限控制,它的主要工作有以下两件事:

  1. 校验客户端请求连接的账号密码的正确性
  2. 拉取该用户对应的操作权限,并缓存在连接中,此后的操作的权限判断都是根据本次拉取的结果进行判断的

MYSQL中使用连接为长连接,在执行的过程中产生的对象都是由连接进行管理的,只有连接断开时,这些对象才会被释放,所以如果连接一直不断开,内存会一直增长,直到OOM导致MYSQL重启,解决方法有两种:

  1. 定期断开长连接
  2. 定期执行mysql_reset_connection(MYSQL5.7后才可以使用),该指令会将连接重置成刚创建的时候

缓存查询

MYSQL会将查询的结果做一次缓存,缓存的key就是查询语句,value为查询的结果,当这张表存在任意写操作的时候,该表对应的缓存都会失效。

MYSQL的查询缓存在大多数的场景下作用不大,因为对于数据量大的表,其写操作必然很多,所以缓存大多是失效的,而对于那种系统配置的表,写操作很少,但是数据量也不会很大,多数系统会直接将数据缓存到应用中。在MYSQL8.0版本后,缓存查询模块被移除了。

分析器

分析器主要做了两件事:

  1. 词法分析
  2. 语法分析

优化器

同一条sql,应该选择那条索引,where条件的执行顺序应该是什么样的,这些都是优化器需要做的

执行器

  1. 表权限判断
  2. 调用对应的存储引擎接口执行操作

binlog

MYSQL用于归档的日志模块,主要用于将数据库中的数据恢复到指定的时间点(InnoDB中有一个redo log,后面会详细的讨论这两种log的区别和作用)