MYSQL逻辑架构与存储引擎

 MYSQL逻辑架构

1、连接层

最上层是一些客户端和连接服务,包括本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。

2、服务层

第二层架构主要是完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析以及优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。

如果是select语句,服务器还会查询内部的缓存。如果缓存足够大,这样在解决大量读取操作额环境中就能够很好的提升系统的性能。

3、引擎层

存储引擎层,存储引擎层真正负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。

4、存储层

数据存储层,主要将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互

存储引擎简介

存储引擎室指表的类型以及在计算机上的存储方式

下面介绍几种MySQL最常见的几种存储引擎

1、InnoDB(mysql5.5之后的默认存储引擎)

  • 它遵循ACID原则设计,提供了具有提交、回滚和崩溃恢复的事务功能;
  • 具有主外键;
  • 支持行锁,操作时只锁某一行,不对其他行有影响,适合高并发操作;
  • 不仅缓存索引还缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响;

优势:在于提供了良好的事务处理,崩溃修复能力和并发控制,增删性能好

扫描二维码关注公众号,回复: 14517344 查看本文章

劣势:占用空间比较大

使用场景:银行(对事物的完整性要求很高)、售票(要求实现并发控制)

2、MyLSAM(mysql5.5之前的默认存储引擎)

  • 基于LSAM存储引擎,并对其进行扩展;
  • 不支持主外键,不支持事务;
  • 只支持表锁,即使操作一条记录也锁住整张表,不适合高并发的操作;
  • 只缓存索引,不缓存真实数据;
  • 基于MyLSAM的存储引擎的表支持三种不同的存储格式:静态型、动态型、压缩型

优势:占有空间小,处理速度快,查询性能好

劣势:不支持事务操作,不适合并发操作

我们常用的两个存储引擎就是InnoDB和MyLSAM,我们可以进行比较:

MyLSAM InnoDB
主外键 不支持 支持
事务 不支持 支持
行标锁 只支持表锁 支持行锁
缓存 只缓存索引,不缓存真实数据 不仅缓存索引还缓存真实数据
性能 查询性能好 增删性能好
表空间
关注点 性能 事务

3、MEMORY

mysql中一类特殊的存储引擎,它使用存储在内存中的内容来创建表,而且数据全放在内存中

优势:数据存储在内存中有利于快速处理,提高表的效率

劣势:不安全,把数据存储在内存中,关机或重启数据都会消失,断电即失

4、Archive

  • 用于数据归档,压缩比非常高;
  • 存储空间大概是InnoDB的10-15分之一;

用于存储历史数据非常合适,比如记录日志信息

5、MERGE

也称MRG.MyLSAM,是一组MyLSAM表的组合,这些MyLSAM表结构必须完全相同.

SQL执行顺序

手写

机读

猜你喜欢

转载自blog.csdn.net/weixin_72076848/article/details/126604179