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. 存储引擎的选择建议
选择存储引擎时需考虑以下因素:
事务需求:
- 需要事务:选择 InnoDB。
- 不需要事务:可选择 MyISAM、Memory 等。
数据访问模式:
- 读写并发:选择 InnoDB。
- 只读或读多写少:可选择 MyISAM。
持久化需求:
- 持久化:InnoDB、MyISAM。
- 非持久化:Memory。
数据规模和性能:
- 数据量大,索引优化重要:选择 InnoDB。
- 极高性能,数据可以丢失:选择 Memory。
4. 总结
- MySQL 提供了多种存储引擎以满足不同的需求。
- InnoDB 是大多数场景下的首选,因其支持事务、高并发和外键。
- 其他存储引擎(如 MyISAM、Memory)则适用于特定的场景。
根据业务需求和数据特性选择合适的存储引擎,是设计高效数据库的关键。
MySQL 的存储引擎有哪些?它们之间有什么区别?的更多相关文章
- MySQL常用存储引擎及如何选择
一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 ...
- mysql之存储引擎和文件配置
(查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...
- MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB
ylbtech-MySQL-TokuDB:MySQL 高性能存储引擎:TokuDB 1.返回顶部 1. 在安装MariaDB的时候了解到代替InnoDB的TokuDB,看简介非常的棒,这里对ToduD ...
- [转帖]mysql常用存储引擎(InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE)介绍与如何选择
mysql常用存储引擎(InnoDB.MyISAM.MEMORY.MERGE.ARCHIVE)介绍与如何选择原创web洋仔 发布于2018-06-28 15:58:34 阅读数 1063 收藏展开 h ...
- 面试官:你用过mysql哪些存储引擎,请分别展开介绍一下
这是高级开发者面试时经常被问的问题.实际我们在平时的开发中,经常会遇到的,在用SQLyog等工具创建表时,就有一个引擎项要你去选.如下图: Mysql的存储引擎有这么多种,实际我们在平时用的最多的莫过 ...
- MySQL InnoDB存储引擎体系架构 —— 索引高级
转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...
- Mysql基础(二):MySQL之存储引擎
目录 MySQL之存储引擎 1.MySQL存储引擎介绍 2.MySQL结构 3.MySQL存储引擎分类 4.存储引擎的使用 5.总结 MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数 ...
- MySQL之四 存储引擎
1.介绍 存储引擎MySQL中的"文件系统" MySQL体系结构 InnoDB存储引擎介绍 My1SAM 和InnoDB区别 mysql MariaDB [(none)]> ...
- 深入解读MySQL InnoDB存储引擎Update语句执行过程
参考b站up 戌米的论文笔记 https://www.bilibili.com/video/BV1Tv4y1o7tA/ 书籍<mysql是怎样运行的> 极客时间<mysql实战45讲 ...
- MYSQL的存储引擎一般只要哪些?
根据个人个人见解: MySQL的存储引擎(构成.安全.锁) Myisam:数据操作快速的一种引擎,支持全文检索.文件保存在数据库名称为目录名的 目录中,有3个文件,分别是表定义文件(.frm).数据文 ...
随机推荐
- https证书管理系统- 自动化签发
https证书管理系统- 自动化签发 第一步:前往网站,注册账户 https://www.lingyanspace.com/ 第二步:进入证书服务菜单,点击新增证书 第三步:填写自有的域名,点击创建订 ...
- oracle11gRAC升级到19C
升级oracle11g集群到19.3 前述环境检查: [root@qhdb1 ~]# crsctl status res -t ------------------------------------ ...
- Akka中使用Logback日志框架
Akka提供的默认日志系统只输出到控制台,这种日志系统不可以用到产品环境,当然你可以整合SLF4J这样的日志系统,下面介绍如何在Akka中使用Logback记录日志. 1. 创建Maven工程引入相关 ...
- server_patrol.sh服务器巡查脚本
server_patrol.sh #!/bin/bash #!/usr/bin/expect -f#! auther by wangxp #定义一个变量 LANG="zh_CN.UTF-8& ...
- Idea无法下载插件或下载插件报错
Plugin Python was not installed: Cannot download 'https://plugins.jetbrains. file -> settings -& ...
- flutter-延时执行
//1秒后这个i行 Future.delayed(Duration(milliseconds: 1000), () { //代码省略 });
- Docker安装mongoDB及使用教程
一.mongoDB是什么? MongoDB是一个NoSQL的非关系型数据库 ,支持海量数据存储,高性能的读写. mongoDB的特点(或使用场景) 1.支持存储海量数据:(例如:直播中的打赏数据): ...
- hbase - [03] 客户端常用命令(hbase shell)
1.列出所有namespace list_namespace 2.创建namespace create_namespace 'ns_name' 3.修改namespace属性 alter_namesp ...
- PowerShell开发游戏 · 打蜜蜂
可以看到,虽然非常抽象简单,但是基础游戏框架已经搭建,游戏机制完善,就缺美工了,哈哈~~~~ [首先] Powershell不是用来开发游戏的,但是没人规定不能开发.因为它可以调取windo ...
- C#中对面向standard2.0、standard2.1的项目进行单元测试
单元测试项目的目标框架 (TargetFramework或TargetFrameworks) 不能是standard2.0或standard2.1. 这是因为.NET Standard只是一个规范,它 ...