体系结构图如下:
从上图我们可以看出,mysql由以下几部分组成:
连接池组件
思想:为解决资源的频繁分配﹑释放所造成的问题,为数据库连接建立一个“缓冲池”。
原理:预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从
“缓冲池”中取出一个,使用完毕之后再放回去。
作用:管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求。管理服务和工具组件
系统管理和控制工具,例如备份恢复、Mysql复制、集群等。SQL接口组件
用户SQL命令接口,进行DML、DDL、存储过程、视图、触发器等操作和管理。解析器组件
SQL命令传递到解析器的时候会被解析器解析和验证。解析器是由Lex和YACC实现的(是一个很长的脚本)
主要功能:
a.将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的
传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那就说明这个sql语句是不合理的。优化器组件
SQL语句在查询之前会使用查询优化器对查询进行优化。它使用的是“选取-投影-联接” 策略进行查询。(Sql执行顺序)缓冲组件
查询缓存,如果查询缓存中有查询结果,查询语句可以直接去查询缓存中取数据。
这个缓存机制是由一系列小缓存组成的。如:表缓存,记录缓存,key缓存,权限缓存等。插件式存储引擎
存储引擎是MySql中具体的与文件打交道的子系统,Mysql的存储引擎是插件式的。
MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)。物理文件
.支持的文件类型:
EXT3、EXT4、NTFS、NFS
.文件内容:
数据文件、日志文件