如果能在脑海中构建出MySql各组件之间如何协同工作的架构图,就会有助于深入理解MySql服务器
Mysql逻辑架构图主要分三层:
1) 第一层负责连接处理,授权认证,安全等等
每个客户端连接都会在服务器进程中拥有一个线程,服务器维护了一个线程池,因此不需要为每一个新建的连接创建或者销毁线程。
当客户端连接到Mysql服务器时,服务器对其进行认证,通过用户名和密码认证,也可以通过SSL证书进行认证。
一旦客户端连接成功,服务器会继续验证客户端是否具有执行某个特定查询的权限。
2)第二层负责编译并优化SQL
这一层包括查询解析,分析,优化,缓存以及所有的的内置函数。
对于SELECT语句,在解析查询前,服务器会先检查查询缓存,如果能在其中找到对应的查询结果,则无需再进行查询解析、优化等过程,直接返回查询结果。
所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视图。
3)第三层是存储引擎。
mysql主从复制原理是大厂后端的高频面试题,了解mysql主从复制原理非常有必要。
主从复制原理,简言之,就三步曲,如下:
主数据库有个bin-log二进制文件,纪录了所有增删改Sql语句。(binlog线程)
从数据库把主数据库的bin-log文件的sql语句复制过来。(io线程)
从数据库的relay-log重做日志文件中再执行一次这些sql语句。(Sql执行线程)
如下图所示:
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。