您现在的位置是:主页 > 数据库技术 > 数据库技术

mysql体系结构和InnoDB存储引擎知识有哪些

IDCBT2022-01-08服务器技术人已围观

简介这篇文章主要介绍“mysql体系结构和InnoDB存储引擎知识有哪些”,在日常操作中,相信很多人在mysql体系结构和InnoDB存储引擎知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简

这篇文章主要介绍“mysql体系结构和InnoDB存储引擎知识有哪些”,在日常操作中,相信很多人在mysql体系结构和InnoDB存储引擎知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql体系结构和InnoDB存储引擎知识有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

MySQL基本架构图

大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。

Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

连接器

连接器就是你连接到数据库时使用的,负责跟客户端建立连接、获取权限、维持和管理连接。

命令: mysql -h$ip -P$port -u$user -p,回车后输密码,也可以在 -p 后面输入密码,但是有密码泄露的风险。

show processlist,可以查看连接的情况,Command 列中有一个 Sleep 表示连接空闲。

空闲连接默认8小时会被断开,可以由wait_timeout参数配置。

在数据库中,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。

由于建立连接比较耗资源,所以建议尽量使用长连接,但是使用长连接后,MySQL 占用内存涨得特别快,这是因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。

解决方案:

定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后,断开连接,之后要查询再重连。

如果你用的是 MySQL 5.7 或更新版本,可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection 来重新初始化连接资源。这个过程不需要重连和重新做权限验证,但是会将连接恢复到刚刚创建完时的状态。

查询缓存

查询缓存是将之前执行过的语句及其结果以 key-value 对的形式缓存在内存中。key 是查询的语句,value 是查询的结果。如果你的查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端。

查询缓存在MYSQL8时被移除了,由于查询缓存失效频繁,命中率低。

分析器

分析器先会做“词法分析”,识别出里面的字符串分别是什么,代表什么。然后需要做“语法分析”,判断你输入的这个 SQL 语句是否满足 MySQL 语法。

标签:

很赞哦! ()

本栏推荐