MySQL的基本架构 - Go语言中文社区

MySQL的基本架构


MySql的基本架构示意图如下:

MySql的基本架构示意图

一、MySQL总体上可分为Server层和存储引擎层。

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

存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。

二、Server层组成部分

连接器

连接器主要负责客户端与数据库服务的连接工作。可通过命令:show processlist 查询当前可用的连接进程的状态。客户端连接后,如果长时间没有通讯连接,则会自动断开连接,默认wait_timeout参数的值是8小时。

分析器

分析器主要是通过词法分析你的sql语句,用来告诉MySQL你要干什么。这个时候,如果你的sql语句有语法错误,就会报异常:“You have an error in your SQL syntax”

优化器

优化器主要是通过你的sql语句,选择一种最优的方式,告诉MySQL该如何执行该语句。比如如下sql语句:

   select * from t1 join t2 using(ID) where t1.a=10 and t2.b=20

那么优化器就会考虑是先通过t1.a=10查询t1的结果值,还是先通过t2.b查询t2的结果。优化器会自动判断出效率最高的一种执行方式,通知MySQL去执行。

执行器

执行器通过操作引擎,将sql语句执行的结果,返回给客户端。

查询缓存

查询缓存顾名思义是用来缓存结果数据的。为什么放到最后来说,是因为在MySQL8.0版本已经没有这个功能了。这个功能弊大于利,当查询结果命中查询缓存时,会直接返回结果。但大多数时候,我们的使用场景更新的频率会非常频繁,当某一个表中有一条更新数据时,会将该表的查询缓存结果全部清空,效率会非常低。可以使用在一些系统配置表,等更新不频繁的表中。当然我们可手动选择是否开启,参数是:query_cache_type.

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/bwt1989/article/details/87482215
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-06 23:11:36
  • 阅读 ( 1297 )
  • 分类:架构

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢