mysql 结构和存储引擎

只是个人认为重要的 不喜勿喷

Mysql的体系结构分为 两层 一层是mysql server  一层是存储引擎

mysql server 层又分为连接层和sql 层

连接层:包括通讯协议,线程处理 ,和账号密码认证三个部分

通讯协议:负责检测客户端是否兼容mysql服务端

线程处理:每一个sql 都是一个线程 一个线程逻辑cpu 在多个cpu之间来回切换

账号密码:验证账号密码 和host主机授权 查看是否可以连接到mysql 服务端

sql层主要是处理sql上面的业务:

权限判断,查询缓存,解析器,预处理,查询优化器,缓存,执行计划

会先进行权限判断,查看是否拥有对应的数据库,表,和对应的业务权限,然后回查询缓存(mysql5.6之后会默认将缓存关闭),缓存没有的话 会执行解析器

去解析sql  对sql语句进行语法验证,预处理sql  对解析器不能处理的sql进行处理,查询优化器对sql进行改写和优化处理 生成处理最优的执行计划就可以调用程序的api 接口 去存储引擎中进行查询数据

存储引擎

存储引擎名称特点应用场景

InnoDB支持事务,行锁(也可以使用表锁)支持mvcc多版本并发控制,并发性高应用于oltp 业务系统

MyISAM不支持事务,表锁,mysql8.0废弃,并发低,利用率低,但是批量处理数据快对数据准确性不高的业务场景,如贴吧

memory处理数据快,但是表中的数据都存在内存中,重启会丢失,支持hash和btree索引对数据安全性要求不高的环境下,丢失也没有问题的场景

tokuDB归percona公司所有,支持事务,支持压缩功能,告诉写入,比innodb快9倍,不产生索引碎片海量数据存储的情况下

(问题? tokuDB 比 innoDB 快那么多 为什么 还有那么多人使用innoDB 而不使用tukoDB 引擎 虽然说tukodb 再MySQL中不持支 需要再其开源的分支上才支持。但是Percona Serve 是免费的而且 它很好的解决了mysql 集群 数据同步延迟的问题。 后续再研究)

你可能感兴趣的:(mysql 结构和存储引擎)