mysql数据库体系结构图:

网上找的很容易理解,掌握其结构还是很有必要的,有助于我们的对mysql深入理解和优化

数据库设计架构推荐知乎 数据库架构图_mysql

mysql由以下几个部分组成:

1、连接池组件,如连接数量限制,线程数量,内存检测

2、管理服务和工具组件 

3、SQL接口组件-执行器执行DML,DDL,视图,触发器等

4、查询分析解析器组件-分析查询语句

5、优化器组件-主要对查询做优化

6、缓冲组件

7、插入式存储引擎

8、物理文件

连接池组件

管理缓冲,线程连接等缓存需求,用户验证等。

管理服务和工具组件

系统管理与控制,另外一些数据库工具使用也在这里 如mysql 启动,导出,关闭等,数据库系统自身管理

解析器组件

主要是解析查询语句,形成解析树,解析过程是这样的:

(1)分析语法是否正确

(2)查询缓存,如果缓存中有就直接返回结果,不做优优化器步骤

优化器组件

优化器主要是对查询做优化,数据的读取方式,索引使用方式,往往我们做SQL查询优化会对直接影响优化器组件解析SQL,他采用的是“选取-投影-关联”的方式进行查询的,例如:select user_id,user_name from user where mobile=xxxxx,这个语句首先执行where 后面的语句进行筛选,而不是将表中所有数据查询出来再过滤 ,其次是将user_id,user_name 进行投影,选取这两个字段,而不是将所有的字段取出再进行过滤,最后将两个结果进行关联。

缓存组件

缓存有buffer和cache,他们之间的区别详见:;

存在一个命中率问题,当查询语句时会先走缓存组件,如果没有再去查训数据文件。他有多种分类有表缓存,记录缓存,key缓存等

存储引擎

他主要和数据库物理文件打交道,查询,增加,删除,修改物理文件,现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB,他们各自有各自的特点,如 InnoDB支持事务

上图中提到锁的管理,首先要明白锁的由来是为了支持并发保证数据的安全,如在查询的同时也在修改数据这样会出现我查询到的结果不对,请去理解脏读和欢读,一般常用的锁有共享锁和排他锁,按照锁的粒度又分为:表锁,行锁,死锁

 




转载于: