前言
我思故我在
MySQL基础架构图
MySQL组成部分说明
①连接器
作用:负责和客户端建立连接,权限校验,管理和维护连接,连接完成处于空闲状态。
问题:如何查看空闲列表?
答案:通过show processlist查看,在Command字段,为Sleep为空闲状态。
引申:我们知道如果客户端长时间不相应,那么会断开连接,而这个时长由wait_timeout控制,默认时间8小时。
命令:SHOW GLOBAL VARIABLES LIKE ‘wait_timeout‘;
注意我们在这里得到的是28800秒,单位是秒。
命令:SET GLOBAL wait_timeout=28800;
这个命令是设置连接时间为28800秒,你也可以设置为其他时间。
问题:对于默认时长超过8个小时,就会连接中断,那我们有什么解决办法?
答案:我们可以使用长连接去解决这个问题,避免每次请求都创建连接的开销,节省了时间和IO消耗,但是会导致内存上升很快,这是因为MySQL的临时内存空间是由连接对象管理,只有断开连接才会释放内存,最后内存占用太大,会被系统杀掉,从而导致MySQL重启。
问题:如何解决长连接存在的问题?
答案:1,我们使用完长连接之后,在断开连接,下次使用的时候在重新连接。2,我们可以执行mysql_reset_connection函数来初始化连接,让连接回到最初的使用状态。
②缓存
作用:mysql也是有缓存的,一般用于select语句,里面的结构是key-value的形式,sql语句作为key,但不建议使用mysql当中的缓存,一旦数据库执行update,insert,delete时就要删除缓存,命中率太低,所以在mysql8.0的时候缓存就被删除了。
问题:查询的时候用缓存什么操作,不用缓存又是什么操作?
答案:1,把query_cache_type设置成为DEMAND,这样SQL默认不适用缓存。2,SELECT SQL_NO_CACHE * FROM 表名,不使用缓存。3,SELECT SQL_CACHE * FROM 表名,使用缓存。
③分析器
作用:主要用于检查是否出现语法错误,如果有,就返回错误信息。
④优化器
作用:判断使用哪个索引更高效等。
⑤执行器
前提:mysql通过分析器知道了要做什么,通过优化器知道了怎么做。
作用:1,校验该用户是否有操作这张表的权限。2,执行优化设计结果,返回执行结果。
最后
如果大家不喜欢文字,可以保存一下我的流程图。
原文地址:https://www.cnblogs.com/phoniex22/p/12362609.html