学习MySQL,一定要对其体系结构有一个清晰的认识
首先我们先来看一张MySQL的体系结构图
ps:这张图对于学MySQL的人来说一定很熟悉吧!

如图·,MySQL的结构一共可以分成三层:
连接层,SQL层,存储层
连接层:
为请求做连接处理,授权认证,安全
SQL层:
包括查询解析、分析、优化、缓存、内置函数,所有跨域存储引擎都在这一层
SQL层 包括以下:
- SQL Interface:SQL接口, 接受用户的SQL命令,并且返回用户需要查询的结果
- Parse:解析器,MySQLY使用ACC算法解析器
a、将 SQL语句解析成数据结构(解析树),并将其传递到后续步骤
b、如果在分解过程中遇到错误,说明该sql语句不合理。
- Optimizer:查询优化器,为SQL语句生成合理的执行计划
如:重写不合理SQL语句,是否使用索引访问表等等
- cache & buffer:用于缓存SQL语句返回的结果。
主要有query_cache,key_buffer,innod_bbuffer等构成
接下来我们看一下下面这张流程图

这是一条SQL语句在内存中的运行过程:
当一条SQL语句发出后,会在SQL层中判断该SQL语句的
是否命中查询缓存(query_cache)中的数据,若是便直接返回该结果。若不是便使用Parse解析该SQL语句生成数据结构(解析树),再通过Optimizer对此进行优化,得到执行计划,生成
指令树,通过其
调用存储引擎的API来执行查询,得到结果,将其缓存在cache & buffer,返回结果。
存储层包括以下:
- 存储引擎: 通过不同的存储引擎为表提供不同的功能和服务,是MySQL有别于其他数据库的特色之一。
5.58之前MySQL的默认引擎是MyISAM,之后到至今是innodb
MySQL的存储引擎是可热插拔的,甚至只要你有能力,可以开发自己的存储引擎。
- File System:os上的文件系统,此处便不多做介绍。
- File & logs:datadir目录下的各种文件
除了这三层之外,还有:
- Management Serveices & Utilities: 系统管理和控制工具。MySQL通过这个工具和服务来实现数据库的控制和管理。比较备份工具mysqldump等。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31386161/viewspace-2131149/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31386161/viewspace-2131149/