一:MySql的逻辑框架
连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理、授权认证、安全等。
服务层:包括缓存查询、解析器、优化器,这一部分是MySQL核心功能,包括解析、优化SQL语句,查询缓存目录,内置函数(日期、时间、加密等函数)的实现。
引擎层:负责数据存储,存储引擎的不同,存储方式、数据格式、提取方式等都不相同,这一部分也是很大影响数据存储与提取的性能的;对存储层的抽象。存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎;特别提示:存储引擎针对于数据表。
- InnoDB:事务优先,表锁,适合高并发
- MyISAM:性能优先,表锁
存储层:存储数据,文件系统。
二:一个Sql语句的完整执行过程
1. 连接层链接数据库
在cmd里面登录mysql的语句### [mysql -h localhost -u root -p_,先链接上数据库
2.查询缓存(Mysql8.0就去掉了这部分)
执行过的语句可以能讲语句和结果以key-value的形式存储在内存中,执行之前会先查询是不是在缓存中,如果在缓存中就直接返回结果了。数query_cache_type设置成DEMAND,这样对于默认的SQL语句都不使用查询缓存。
3.分析器
词法分析,语法分析
4.优化器
这块比较重要,这个地方会选择索引,还有做一些其他的优化,比如对join中表的先后。
5.执行器
- 首先看你有没有执行的权限
- 可以执行就直接执行。
网友评论