Mysql是关系型数据库,关系型数据库就是由二维表格建立的数据组织和二维表格之间的联系构成的数据关联。
Mysql工作原理
如上图所示mysql的内部建构主要有编程语言交互接口、系统管理和控制工具集合、连接池、解析器、查询优化器、SQL接口、查询缓存、存储引擎、文件系统等部分组成,下面分别介绍一下各个组成部分。
(1)编程语言接口:
指不同语言与SQL的交互接口,如java的JDBC、.Netframework的ODBC。
(2)系统管理和控制工具的集合:
提供管理配置服务、备份还原、安全复制等功能。
(3)连接池:
接受客户端的请求,缓存请求,检查内存的可利用情况,如果没有可用线程,就创建线程,有可利用线程就重复利用。
(4)解析器:
解析验证SQL语法,分解SQL成相应的数据结构,已备后面的处理。
(5)查询优化器:
对SQL语句进行优化处理,优化执行路径,生成执行树,最终数据结库会选择认为最优的方案执行并返回结果。
(6)SQL接口:
接受用户的SQL命令,并返回结果。
(7)查询缓存:
缓存查询结果。如果SQL查询中命中结果,将直接从缓存中返回结果,不在执行SQL分析等操作;没有命中才会继续执行后续的解析、查询优化、执行SQL接口、返回结果,同时将结果加入到缓存中。
(8)存储引擎:
是MYSQL中具体的与文件打交道的子系统,可以看到它是以插件的形式存在的,意味着可以自定义存储引擎,只是MYSQL很特别的地方。MYSQL提供了很多的存储引擎,其优势各不一样,有的查询效率高、有的支持事务等,最常用的有,MySAM、InnoDB、BDB等。
(9)文件系统:
是存放数据库表数据以及相关配置的地方。
上面就是MYSQL的大概组成部分,这样描述显得有些空洞,下面通过一些简单的查询语句的流程来串联一下上述组成部分的工作流程:
首先客户端发送查询命令给MYSQL服务器,服务器会先检查缓存,如果缓存命中,则返回缓存中的数据,否则服务器进行SQL解析、预处理,再通过优化器生成执行计划。服务器根据执行计划,调用对应引擎的API来执行查询,最后再将结果返回给客户端。
MYSQL的主要引擎有InnoDB、MyISAM、MEMORY、CSV、ARCHIVE、BLACKHOLE,目前主要运用的引擎是InnoDB,MYSQL默认的引擎也是这个。