引言
数据库在我们工作中是常用的工具,公司的重要业务信息大部分都会存储在数据库中。
因此,对于开发人员或运维人员来说,掌握数据库基本原理是必要的技能。无论你使用的是何种数据库,了解数据库的体系架构是非常必要的。“知此知彼,方能百战百胜”。
下面小编就带你来了解MySQL的体系架构。
首先我们得明确MySQL的体系架构主要是数据库和数据库实例组成的,在了解MySQL的实质之前,先来了解以下的概念。
- MySQL是一种单进程多线程的数据库,而数据库实例则是以一个进程的方式在系统中体现出来的。
- MySQL的文件格式有 ibd、MYI、MYD、frm 等结尾的格式文件。
一、MySQL架构示意图
从上图中我们可以发现,整个MySQL框架由两部分组成,
1、 上层是MySQLD,又被叫做“SQL的图层”,里面包含有 查询解析、分析、优化、缓存以及系统自定义的函数(比如,时间、三角函数、加密函数等),主要能实现的功能有:视图、触发器、存储过程等。
2、 下层是为上层提供接口的各式各样的存储引擎,又被称之为“存储引擎图层”。存储引擎包含有很多底层存储引擎诸如 InnoDB、MyISAM、Memory…….,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击它们被用于像“根据主键查询一行记录”等等方法。但存储引擎不会去解析SQL,各个存储引擎直接不会发生互相通信,他们就仅仅的响应上层服务器端的请求。
二、查询工作原理示意图
1、 客户端首先向服务器发送一条查询语句。
2、 服务器接收到查询语句之后,做两件事情:
- 一是,检查查询语句是否完全匹配。
- 二是,然后再检查该条语句是否具有权限。
3、 当这两个条件都满足的时候,即开始索引缓存,缓存中存在的话则直接返回结果,如果不存在的话,则进入下一个环节,即步骤4。
4、 先进行预处理阶段,解析SQL语句,生成新的解析树,接着再交给对应的模块处理,根据优化器优化,然后生成对应的执行计划。
5、 优化器的执行计划就是,调用存储引擎中的API执行计划表,当有数据变化的时候,打开日志功能,就会记录在相应的二进制日志文件中。
6、 设置缓存,请求完成之后,将结果返回给连接进/线程模块,然后到客户端,并决定是等待请求还是与客户端连接断开。
结论
以上就是MySQL的软件体系架构和查询工作原理,对于开发人员以及运维人员的我们很重要。了解了他们,就能为你的数据库开发道路前进中,扫除很多障碍。