首页 > 数据库 >Mysql的数据库引擎有哪些,有什么区别

Mysql的数据库引擎有哪些,有什么区别

时间:2024-12-24 22:56:07浏览次数:5  
标签:存储 场景 数据库 支持 --- 引擎 Mysql 数据 ###

MySQL 支持多种数据库引擎,不同的引擎在性能、功能和使用场景上有所不同。以下是 MySQL 常见的数据库引擎及其区别:  

---

### **1. InnoDB**
- **特点**:
  - 支持事务(ACID),是 MySQL 默认的存储引擎。
  - 支持外键约束。
  - 支持行级锁定(适合高并发)。
  - 使用聚簇索引,提升查询性能。
  - 数据存储在 `.ibd` 文件中(一个表对应一个文件)。
- **优点**:
  - 数据一致性高,适合需要事务支持的应用场景。
  - 性能稳定,支持高并发读写。
- **缺点**:
  - 相对占用更多存储空间。
  - 对只读查询性能不如 MyISAM。

**使用场景**:金融系统、电商平台等需要事务支持的应用。  

---

### **2. MyISAM**
- **特点**:
  - 不支持事务和外键。
  - 支持表级锁定,读写并发性能较差。
  - 索引文件和数据文件分离(索引存储在 `.MYI` 文件中,数据存储在 `.MYD` 文件中)。
  - 支持全文索引(适合全文检索场景)。
- **优点**:
  - 查询性能优异,尤其是读密集型操作。
  - 存储简单,占用空间较少。
- **缺点**:
  - 不支持事务和外键,数据一致性较差。
  - 表级锁可能导致写入性能瓶颈。
  
**使用场景**:只读或读多写少的系统,如内容管理系统(CMS)。  

---

### **3. MEMORY (HEAP)**
- **特点**:
  - 数据存储在内存中,速度极快。
  - 数据在服务器关闭或崩溃时会丢失。
  - 使用表级锁定。
- **优点**:
  - 读写性能极高。
  - 适合需要快速访问的小型临时表。
- **缺点**:
  - 数据丢失风险高。
  - 受限于物理内存容量。
  
**使用场景**:临时数据缓存、中间计算结果存储。  

---

### **4. CSV**
- **特点**:
  - 数据以逗号分隔值(CSV)文件的形式存储。
  - 每次查询都需要加载整个文件。
- **优点**:
  - 易于与其他系统交互(如导入/导出数据)。
- **缺点**:
  - 性能较差,不适合高并发。
  - 不支持索引。
  
**使用场景**:简单的数据导入和导出。  

---

### **5. ARCHIVE**
- **特点**:
  - 专为存储大量归档数据设计。
  - 支持高效的插入操作,但查询性能较低。
  - 不支持索引,仅支持 AUTO_INCREMENT 主键。
- **优点**:
  - 存储空间利用率高。
  - 非常适合插入操作。
- **缺点**:
  - 不支持更新和删除操作。
  - 查询效率较低。
  
**使用场景**:日志存储、历史数据归档。  

---

### **6. FEDERATED**
- **特点**:
  - 用于访问远程 MySQL 数据库中的表。
  - 本地不存储数据,查询时实时访问远程数据。
- **优点**:
  - 实现分布式查询。
- **缺点**:
  - 查询性能受网络延迟影响。
  - 配置和管理复杂。
  
**使用场景**:分布式系统的数据整合。  

---

### **7. NDB (Clustered DataBase)**
- **特点**:
  - MySQL 集群存储引擎。
  - 数据存储在分布式内存中,但也支持磁盘备份。
  - 支持事务和高可用。
- **优点**:
  - 高可用性和分布式支持。
  - 高并发和快速响应。
- **缺点**:
  - 部署和维护复杂。
  - 对硬件资源需求较高。
  
**使用场景**:高可用分布式集群环境。

---

### **8. BLACKHOLE**
- **特点**:
  - 数据被写入后直接丢弃,查询永远为空。
- **优点**:
  - 适合日志记录或复制测试。
- **缺点**:
  - 无法存储数据。
  
**使用场景**:测试环境或记录二进制日志(binlog)。  

---

### **总结:如何选择引擎**
- **事务支持**:选择 InnoDB。
- **读密集型场景**:选择 MyISAM。
- **临时数据存储**:选择 MEMORY。
- **日志归档**:选择 ARCHIVE。
- **分布式存储**:选择 NDB。
- **跨库访问**:选择 FEDERATED。

根据业务需求选择合适的引擎可以大幅提升数据库的性能和效率。

标签:存储,场景,数据库,支持,---,引擎,Mysql,数据,###
From: https://blog.csdn.net/Zero_pl/article/details/144650104

相关文章

  • 为什么虚拟主机无法连接其他主机的数据库?
    虚拟主机无法连接其他主机的数据库通常是由多种因素引起的。首先,我们需要明确的是,默认情况下,虚拟主机是可以连接外部数据库的,但这并不意味着所有情况下都能成功连接。以下是可能导致连接失败的原因及解决方案:网络连接问题:检查目标数据库服务器是否允许来自您虚拟主机IP地址的......
  • 如何找回MySQL数据库的密码?
    忘记MySQL数据库的密码是一个常见的问题,但幸运的是,有几种方法可以帮助您找回或重置密码。以下是详细的步骤指南,帮助您安全有效地恢复对数据库的访问权限:参考官方文档或教程:许多托管服务商会提供详细的指南,教用户如何自行重置MySQL密码。您可以查阅服务商提供的帮助文档或FAQ......
  • Mysql存储引擎(InnoDB-事务原理)
    1、什么是事务    事务是一组命令的集合,要么全部成功,要么都不成功。事务有四个特征,即原子性、一致性、隔离性、持久性。其中隔离性又有四大隔离级别,分别是读未提交,读已提交、可重复读、串行化,四大隔离级别主要解决三个现象,脏读,不可重复读,幻读。 2、事务的四大特性(A......
  • Qt之数据库使用(十四)
    Qt开发 系列文章-QSqlDatabase-SQLite(十四)目录前言一、SQLite二、SQLite使用1.添加SQL2.创建数据库3.定义类及相关变量4.相关功能函数5.用户类定义6.用户类使用7.效果演示8.SQLite数据库总结前言‌Qt支持的数据库包括SQLite、MySQL、PostgreSQL、ODBC等‌......
  • 医院食堂订餐系统Python+Vue3+Django(Pycharm毕业设计 mysql)
    文章目录具体实现截图项目介绍和开发技术介绍开发技术核心代码部分展示项目结构分析文章目录/写作提纲参考源码/演示视频获取方式具体实现截图项目介绍和开发技术介绍创新之处(1)系统资源闭环整合,实现了综合功能高度集成。(2)采用DJANGO框架,开发软件更加方便、快......
  • 如何查看oceanbase数据库修改过的参数
    OceanBase中没有像ORACLE或MySQL那样独立的参数文件,因此在进行数据库迁移的这种场景下,如何保持新老数据库的参数的一致成了OceanBase中的一个问题。这个问题其实也可以转化为如何查询OceanBase数据库中修改过的参数,我们需要找到那些和默认值不一致的参数,并以此在新数据库环境中同......
  • pandas 数据库操作
    importpandasaspdfromsqlalchemyimportcreate_engine#username="root"password="@WSX3edc"host="127.0.0.1"port=3306database="test"engine=create_engine("mysql+pymysql://{username}:{password}@{hos......
  • 【Nginx应用】Windows下使用Nginx反向代理访问MySQL数据库
    环境说明1和2互通,2和3互通,1和3不通,想要在1上访问3上的msyql服务。实现步骤如下:一、安装nginx1.1下载nginx下载地址https://nginx.org/download/nginx-1.26.2.zip1.2将下载的安装包上传到192.168.221.134运维跳板机,并解压1.3nginx常用操作1.3.1启动nginx#进入......
  • 数据库系统------并发控制
    基于锁的协议锁机制用于控制并发访问数据项锁协议是事务在请求和释放锁时需要遵循的一组规则。锁协议的目的是确保事务的并发执行不会导致数据的不一致性,同时帮助系统避免死锁和其他问题锁的两种模式排它锁(ExclusiveLock,X模式)目的:一个事务在对数据项进行操作时,可以对......
  • mysql把行转成列
    原始数据:codenameREPORT_NAMEamount1A2023销量1001A2022销量2001A2021销量4001B2023销量3001B2020销量100输出数据:codename2023销量2022销量2021销量2020销量1A10020040001B30000100SQL:SELECTc......