码迷,mamicode.com
首页 > 数据库 > 详细

MySQL数据库的基础架构

时间:2020-02-25 17:51:51      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:对象管理   函数   slist   不用   连接   建立连接   mysql8   语法错误   通过   

前言

我思故我在

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,执行优化设计结果,返回执行结果。

最后

如果大家不喜欢文字,可以保存一下我的流程图。
技术图片

MySQL数据库的基础架构

标签:对象管理   函数   slist   不用   连接   建立连接   mysql8   语法错误   通过   

原文地址:https://www.cnblogs.com/phoniex22/p/12362609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!