首页 > 数据库 >MySQL 的存储引擎有哪些?它们之间有什么区别?

MySQL 的存储引擎有哪些?它们之间有什么区别?

时间:2024-12-14 22:21:09浏览次数:3  
标签:存储 场景 支持 索引 引擎 MySQL 数据

MySQL 的存储引擎及其区别

MySQL 提供多种存储引擎,不同存储引擎在数据存储方式、索引支持、事务处理等方面各具特点。以下列出常用的存储引擎及其主要区别。


1. 常见存储引擎

(1)InnoDB

  • 特点
    • 默认存储引擎,支持事务(ACID)。
    • 使用 聚簇索引,主键数据和索引存储在一起。
    • 支持外键约束。
    • 采用 MVCC(多版本并发控制)提高并发性能。
  • 适用场景
    • 需要事务支持的场景,如银行系统、电商系统。
    • 大量数据的读写操作。

(2)MyISAM

  • 特点
    • 不支持事务和外键。
    • 采用非聚簇索引,数据和索引分开存储。
    • 支持全文索引。
    • 表级锁,写操作会阻塞其他读写操作。
  • 适用场景
    • 以读操作为主的场景,如日志分析、数据仓库。
    • 数据不需要频繁更新。

(3)Memory

  • 特点
    • 数据存储在内存中,读写速度快。
    • 数据非持久化,MySQL 重启或崩溃后数据丢失。
    • 支持表级锁。
  • 适用场景
    • 临时数据存储或需要极高读写速度的场景,如缓存系统。

(4)CSV

  • 特点
    • 数据以逗号分隔值文件(CSV)格式存储。
    • 不支持索引。
    • 性能较低。
  • 适用场景
    • 数据导入导出操作。

(5)Archive

  • 特点
    • 专为存储归档数据设计,支持高压缩比。
    • 仅支持 INSERT 和 SELECT 操作,不支持索引和事务。
  • 适用场景
    • 只需存储大量历史归档数据,几乎不需要更新。

(6)Federated

  • 特点
    • 用于访问远程 MySQL 服务器的数据。
    • 数据存储在远程服务器上。
  • 适用场景
    • 需要整合多个 MySQL 数据库的数据。

(7)NDB(Clustered Storage Engine)

  • 特点
    • 用于 MySQL 集群,支持高可用性和高并发。
    • 数据分布式存储在多个节点。
  • 适用场景
    • 高可用、高性能需求的分布式场景。

2. 存储引擎之间的区别

存储引擎 事务支持 锁机制 索引方式 全文索引 外键支持 数据持久化 适用场景
InnoDB 支持 行级锁 聚簇索引 不支持 支持 支持 高并发、事务处理
MyISAM 不支持 表级锁 非聚簇索引 支持 不支持 支持 以读为主的应用
Memory 不支持 表级锁 非聚簇索引 不支持 不支持 不支持 缓存、临时数据存储
CSV 不支持 不支持 不支持 支持 数据导入导出
Archive 不支持 行级锁 不支持 不支持 支持 大量归档数据存储
Federated 不支持 不支持 不支持 不支持 跨服务器数据访问
NDB 支持 行级锁 非聚簇索引 不支持 不支持 支持 分布式、高并发、高可用性场景

3. 存储引擎的选择建议

选择存储引擎时需考虑以下因素

  1. 事务需求

    • 需要事务:选择 InnoDB。
    • 不需要事务:可选择 MyISAM、Memory 等。
  2. 数据访问模式

    • 读写并发:选择 InnoDB。
    • 只读或读多写少:可选择 MyISAM。
  3. 持久化需求

    • 持久化:InnoDB、MyISAM。
    • 非持久化:Memory。
  4. 数据规模和性能

    • 数据量大,索引优化重要:选择 InnoDB。
    • 极高性能,数据可以丢失:选择 Memory。

4. 总结

  • MySQL 提供了多种存储引擎以满足不同的需求。
  • InnoDB 是大多数场景下的首选,因其支持事务、高并发和外键。
  • 其他存储引擎(如 MyISAM、Memory)则适用于特定的场景。

根据业务需求和数据特性选择合适的存储引擎,是设计高效数据库的关键。

标签:存储,场景,支持,索引,引擎,MySQL,数据
From: https://www.cnblogs.com/eiffelzero/p/18607344

相关文章

  • MySQL 的索引类型有哪些?
    MySQL的索引类型MySQL提供多种索引类型,用于优化数据查询性能。每种索引类型在存储结构、适用场景和性能特性方面各不相同。1.常见的索引类型(1)B+树索引结构:基于B+树实现,是MySQL中最常见的索引类型。特点:索引节点按照键值从小到大顺序排列。叶子节点之间通过指针连......
  • Gin存储文件与oss对象存储(二)
    Gin存储文件与oss对象存储(二)原创 何泽丰 ProgrammerHe  2024年12月13日20:53 广东 听全文Gin存储文件与oss对象存储(二)概述朋友们大家好啊,这一篇笔记我们来简单记录一下前端在Vue2项目中base64转图片,在文件上传时实现分片上传、断点续传功能;最后将视频文件存......
  • MySQL中这14个神仙功能,惊艳到我了!!!
    大家好,我是苏三,又跟大家见面了。前言我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。1.group_concat在我们平常的工作中,使用groupby进行分组的场景,是非常多的。比如想统计出用户表中,名称不同的用户的具体名称有哪些?......
  • 模式识别小课设:基于 TF-IDF 与 Logistic 回归的新闻文本五分类引擎
    代码如下:importosimportnumpyasnpimportpandasaspdfromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.linear_modelimportLogisticRegressionfromsklearn.metricsimportaccuracy_score#定义新闻类别categories=["军事","......
  • MySQL coredump 了
    背景基础环境:操作系统:DB:RetHet 7.8存储:SSD内存:16GCPU核数:16CORE数据库环境:5.7.12事务隔离级别:RR 问题现象:应用反馈 出现了大量的数据库连接报错,之后恢复正常。MySQL日志显示数据库似乎崩溃了。排查原因1、大量数据库连接报错,根据经验第一反应是网络的问题造......
  • php毕业设计期末作业购物商城php+mysql+html在线购物系统购物商城购物网站宠物商城电
     一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购......
  • MySQL Limit 分页查询优化
    前言在各类系统的表格类信息展示的功能中,经常会用到“翻页”这个操作,在页面上每次只展示有限的数据,需要看其他数据的时候则像翻书一样翻到后面的“页”。在MySQL支持的SQL语法中对此有特殊的支持,开发人员在实现这类功能的时候很方便:select*fromxxxlimitM,Nselect*f......
  • Python爬取数据插入mysql(简易记录)
    importmysql.connectorimportrequestsfromlxmlimporthtml#连接MySQL数据库db=mysql.connector.connect(host="?",user="?",password="?",database="?")cursor=db.cursor()company_url=......
  • SinoDB 时序引擎的使用
    SinoDB时序引擎的使用黄铎彦这个作业属于的课程作业要求作业目标撰写技术总结博客技术概述SinoDB时间序列引擎TimeSeries是星瑞格基于BizWrapper业务封装技术构建的一套专用于时序数据处理的模块集。涉及与非时序类数据交互的业务场景时,这一引擎避免了跨......
  • mysql-搭建主从复制
    mysql-搭建主从复制Master(主):dockerrun-p3339:3306--namemaster-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7Slave(从):dockerrun-p3340:3306--nameslave-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7Master对外映射的端口是3339,Slave对外映射的端口是3340。因为do......