作为一个MySQL DBA,了解一下MySQL的整体架构是非常必要的,本文将以MySQL5.7为例结合企业版本为大家介绍MySQL数据库服务器架构。当然数据库架构里面的内容比较多,这里主要是对一些核心插件做一些介绍。
整体架构如下图所示:
我们的这篇文章就基于上图进行展开讨论。如上图所示,黄色区块代表的是社区版和企业版都有的功能,而红色区块表示的是只有企业版里才有的功能,椭圆和圆柱体表示的是该功能是插件形态,而方形(圆角方形)表示的是其他一些功能 。该图的版本基础MySQL5.7.20制作,其中包含了防火墙和审计功能等一些企业版新特性的介绍。
如上图所示,MySQL服务器最顶端是各种各样的连接器和连接API,用于应用程序能够连接到MySQL。我们常用的mysql client使用的是C语言开发的API,在上图中我们也是可以体现出来。除此之外当然还有很多其他的连接器,这里没有标注出来,如果有兴趣可以参考官方文档即可。
中间那块比较大的深色区域代表的是服务器端,该区域最上层是连接处理器(connection handing),连接处理器有两种方式,第一种是最原始的方式,每个连接创建一个线程,这种方式下当收到请求后会简单的为每个连接创建一个线程,这个也是社区版的连接方式。另一种就是高大上的线程池方式,线程池是企业版里的插件, 这种方式可以通过线程的重用来控制线程的总数,大大减少了重复创建线程的开销,线程池非常适合于数据库大量查询但是单个查询都非常快的场景,使用线程池大大提高数据库查询的扩展性和性能。
60x Better Scalability: Read/Write
18x Better Scalability: Read Only