mysql优化是java面试中的重点项目,几乎在每一场java面试中都会被问到一些和mysql优化相关的题,所以从今天起老师想和大家分享一套mysql的优化课程,也许有些同学会纳闷,mysql的优化课程为什么开篇就讲【MySQL的架构体系】呢?我们见到了太多单纯讲优化经验的文章,这些文章中提到的技巧确实能解决一些燃眉之急,可是优化过后,我们是否真的理解了为什么要这样优化呢?掌握MySQL的结构体系,能够让我们知其然,又能知其所以然。 以下引用了一位大神的话,和大家共勉。
看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题
一. MYSQL的架构体系图
首先老师手绘了一张MySQL的体系架构图,让同学们对完整的MySQL体系架构有一个整体认识
二. 分层介绍各模块的作用
从上图中我们可以很清楚的发现MySQL的体系架构分为:服务层,引擎层,存储层 三层。
接下来老师将大致介绍每一层的作用,为我们日后学习MySQL优化筑基。
2.1 服务层
连接池:主要负责用户连接上mysql服务器的工作。
用户名和密码的认证;
权限的控制;
线程的重用和限制,可以起到保护数据库服务器不至于被海量的连接拖垮,造成OOM。
查询缓存: 提升查询效率。
缓存的数据以 key-value的形式保存,key就是查询语句;
由于数据频繁失效弊大于利,MySQL8.0已经把这一块废弃;
解析器: 对sql命令做解析。
语法分析: 分析sql语法是否正确。
词法分析: 识别出sql语句的表名 列名,视图等。
优化器:sql语句执行前进行优化 包括【索引选择,join顺序调整等】。
执行器:操作引擎,返回结果。
2.2 引擎层
存储引擎概念就是指 mysql数据文件的存储方式包含【存储机制,索引和锁的水平】等信息
MySQL支持多种存储引擎(数据存储方式)包含【InnoDB、MyISAM、Memory】等。
MySQL的核心就是存储引擎。
2.3 物理文件存储层
存储层主要存储系统的物理文件,并完成和引擎层的交互。
物理文件包含以下三类:
日志文件:包含对数据做修改的 Binary log 和记录慢查询的 Slow Query log
数据文件:包含表结构定义文件,数据文件,索引文件等
系统配置文件: 包含/etc/my.cnf等
四. 结语
正确的了解MySQL的体系结构之后,那么恭喜各位同学,我们已经为学习MySQL优化顺利筑基了。