MySQL存储引擎与适用场景详解(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL存储引擎与适用场景详解(上)

0 存储引擎的意义

为什么是可插拔式的?

可插拔存储引擎体系结构使

  • 数据库专业人员可以为特定业务需求选型合适的存储引擎
  • 完全不受管理任何特定应用程序编码需求的需要


这种高效的模块化体系结构为那些希望专门针对特定应用程序需求(例如数据仓库,事务处理或高可用性情况)的用户提供了巨大的好处,同时享有利用独立于任何一个的一组接口和服务的优势存储引擎。

MySQL服务器体系结构将应用程序开发者和DBA与存储级别的所有底层实现细节隔离,从而提供了一致且简单的应用程序模型和API。因此,尽管跨不同的存储引擎具有不同的功能,但应用程序不受这些差异的影响。


MySQL架构

具有可插拔式存储引擎的MySQL体系结构

image.png


Connectors 各种语言的客户端应用


Connection Pool 为应用层,负责连接、验证等功能

应用层,负责和客户端,用户交互,需要和不同的客户端和中间服务器进行交互,建立连接,记住连接的状态,响应它们的请求,返回数据和控制信息(错误信息,状态码等)。


NoSQL Interface、SQL Interface、Parser、Optimizer、Cache & Buffers、Storage Engines——逻辑层

逻辑层,负责具体的查询处理、事务管理、存储管理、恢复管理,以及其他的附加功能。查询处理器负责查询解析、执行,当接收到客户端的Sql查询,数据库就分配一个线程来处理它,由查询处理器生成执行计划,交由计划执行器来执行,执行器的部分操作还需要访问更底层的事务存储管理器操作数据,事务、存储管理器主要负责我们的事务管理、并发控制、存储管理,由我们的事务管理器来确保“ACID”特性,由锁管理器来控制我们的并发,由日志管理器来确保我们的数据持久化,存储管理器一般还包括一个bufer管理器,由它来确定磁盘和内存缓冲之间的数据传输。


Files& Logs 物理层

物理层,实际物理磁盘(存储)上的数据库文件。如我们的数据文件、日志文件等。


可插拔存储引擎体系结构提供了在所有基础存储引擎中通用的一组标准管理和支持服务。

存储引擎本身是数据库服务器的组件,它们实际上对在物理服务器级别维护的基础数据执行操作,规定了数据文件的组织形式。


应用程序程序员和DBA通过存储引擎上方的连接器API和服务层与MySQL数据库交互。如果应用程序更改带来了要求基础存储引擎更改的要求,或者添加了一个或多个存储引擎来支持新需求,则无需进行重大的编码或流程更改即可使工作正常进行。 MySQL服务器体系结构通过提供适用于整个存储引擎的一致且易于使用的API,使应用程序免受存储引擎的潜在复杂性的影响。


1 Isam

在读取数据方面速度很快,而且不占用大量的内存和存储资源

但不支持事务、外键、索引。

MySQL≥5.1版本中不再支持。


2 Berkeley

支持COMMIT和ROLLBACK等事务特性。

MySQL在 ≥ 5.1版本中不再支持。


3 CSV

使用该引擎的MySQL数据库表会在MySQL安装目录data文件夹中的和该表所在数据库名相同的目录中生成一个.CSV文件(所以,它可以将CSV类型的文件当做表进行处理),这种文件是一种普通文本文件,每个数据行占用一个文本行。


但是不支持索引,即使用该种类型的表没有主键列;

也不允许表中的字段为null。csv的编码转换需要格外注意。

适用场景

支持从数据库中拷入/拷出CSV文件。如果从电子表格软件输出一个CSV文件,将其存放在MySQL服务器的数据目录中,服务器就能够马上读取相关的CSV文件。同样,如果写数据库到一个CSV表,外部程序也可以立刻读取它。在实现某种类型的日志记录时,CSV表作为一种数据交换格式,特别有用。


4 MEMORY(亦称HEAP)

在内存中创建临时表来存储数据。


出发点是速度 采用的逻辑存储介质是内存。


磁盘文件只存储表结构,数据存储在内存,所以使用该种引擎的表拥有极高插入、更新和查询效率。


默认使用哈希(Hash)索引,速度比使用B+Tree快,也可使用B+树索引。


由于这种存储引擎所存储的数据保存在内存中,无法持久化!所以其保存的数据具有不稳定性,比如如果mysqld进程发生异常会造成这些数据的消失,所以该存储引擎下的表的生命周期很短,一般只使用一次。


适用场景

如果需要该数据库中一个用于查询的临时表。



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
5月前
|
存储 SQL 关系型数据库
MySQL存储引擎简介
在选择相应的存储引擎时,需要充分考虑实际业务场景、性能需求和数据一致性要求,从而为数据管理提供最佳支持。
332 17
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
10月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
1774 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
存储 关系型数据库 MySQL
MySQL在企业内部应用场景有哪些
【10月更文挑战第17天】MySQL在企业内部应用场景有哪些
465 0
|
存储 关系型数据库 MySQL
介绍一下MySQL的一些应用场景
【10月更文挑战第17天】介绍一下MySQL的一些应用场景
2621 0
|
7月前
|
存储 关系型数据库 MySQL
MYSQL支持的存储引擎有哪些, 有什么区别
MYSQL存储引擎有很多, 常用的就二种 : MyISAM和InnerDB , 者两种存储引擎的区别 ; ● MyISAM支持256TB的数据存储 , InnerDB只支持64TB的数据存储 ● MyISAM 不支持事务 , InnerDB支持事务 ● MyISAM 不支持外键 , InnerDB支持外键
|
10月前
|
存储 关系型数据库 MySQL
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
254 7
|
12月前
|
存储 SQL 关系型数据库
MySQL存储引擎
本文介绍了数据库优化的多个方面,包括选择合适的存储引擎、字段定义原则、避免使用外键和触发器、大文件存储策略、表拆分及字段冗余处理等。强调了从业务层面进行优化的重要性,如通过活动设计减少外部接口调用,以及在高并发场景下的流量控制与预处理措施。文章还提供了具体的SQL优化技巧和表结构优化建议,旨在提高数据库性能和可维护性。
352 1
MySQL存储引擎
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
1631 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案

推荐镜像

更多