MySQL的存储引擎:

目录

InooDB引擎:

MyISAM引擎:

InooDB引擎与MyISAM存储引擎的区别:

Archive引擎:

Blackhole引擎:

CSV引擎:

Memory引擎:

Federated引擎:

Merge引擎:

NDB引擎:


InooDB引擎:

具备外键支持功能的事务存储引擎。

InooDB是MySQL的默认事务性引擎,被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(commit)和回滚(rollback)。除了增加和查询外,还需要更新、删除,优先选择InooDB存储引擎。支持行级锁,操作时只锁某一行,不对其他行有影响,适合高并发的操作。

InooDB读写操作的处理效率差一些,对内存要求较高。

MyISAM引擎:

主要的非事务处理存储引擎。提供了大量的特性,包括全文索引、压缩、空间函数等。访问速度快,对事物完整性没有要求或者以SELECT、INSERT为主的应用。针对数据统计有额外的常数存储,所以COUNT(*)查询效率很高。只读应用或者以读为主的,优先选择MyISAM存储引擎。

不支持事务、行级锁、外键,崩溃后无法安全恢复。表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作。

InooDB引擎与MyISAM存储引擎的区别:

InooDB提供了良好的事务管理、崩溃修复能力和并发控制。因为InooDB支持事务,所以对于要求事务完整性的场合需选择InooDB。缺点是读写效率稍差,占用的数据空间相对比较大。

MyISAM提供了大量的特性,但是不支持事务、外键,崩溃后无法安全恢复。以读操作和插入操作为主,只有很少的更新、删除操作,并且对事物的要求没那么高,就可以选择MyISAM存储引擎。优点是占用空间小,处理速度快。缺点是不支持事物的完整性和并发性。

对比MyISAM的存储引擎,InooDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。

MyISAM只缓存索引,不缓存真实数据,InooDB不仅缓存索引还要缓存真实数据,对内存的要求较高,而且内存大小对性能有决定性的影响。

Archive引擎:

用于数据存档。仅支持插入和查询两种功能(行被插入后不能再修改)。

MySQL5.5以后支持索引功能。

拥有很好的压缩机制,使用zlib库,在记录请求时实时的进行压缩,经常被用来作为仓库使用。

创建ARCHINE表时,存储引擎会创建名称以表名开头的文件。数据文件的扩展名为.ARZ。

同样的数据量下,比MyISAM表要小大约75%,比InnoDB表小大约83%。

采用了行级锁。该ARCHIVE引擎支持auto_increment列属性,auto_increment列可以具有唯一索引或者非唯一索引。在其他列创建索引会导致错误。

适合日志和数据采集应用,适合存储大量的独立的作为历史记录的数据,拥有很高的插入速度,但是对查询的支持较差。

Blackhole引擎:

丢弃写操作,读操作会返回空内容。

Blackhole引擎没有实现任何存储机制,会丢弃所有插入的数据,不做任何保存。但是服务器会记录Blackhole表的日志,所以可以用于赋值数据到备库,或者简单地记录到日志,但是有很多问题。

CSV引擎:

存储数据时,以逗号分隔各个数据项。

CSV引擎可以将普通的CSV文件作为MySQL的表来处理,但不支持索引。可以作为一种数据交换的机制。存储的数据直接可以在操作系统里,用文本编译器,或者excel读取。对于数据的快速导入、导出是有明显优势的。

创建CSV表时,服务器会创建一个纯文本数据文件,其名称以表名开头并带有.CSV扩展名,将数据存储到表中时,存储引擎将其以逗号分隔值格式保存到数据文件中。

Memory引擎:

Memory采用的逻辑时内存,响应速度快,但是当进程崩溃时数据会丢失。要求存储的数据是数据长度不变的格式。

Memory同时支持哈希索引和B+数索引。至少比MyISAM表要快一个数量级。表的大小是受到限制的,主要取决于两个参数,分别是max_rows和max_heap_table_size。

数据文件与索引文件分开存储。每个基于Memory存储引擎的表实际对应一个磁盘文件,文件名与表明相同,类型为frm类型,该文件中只存储表的结构,数据文件都是存储在内存中的。有利于数据的快速处理,提高整个表的处理效率。

缺点是:数据易丢失,生命周期短。

适用场景:

目标数据比较小,而且频繁的进行访问。在内存中存放数据,如果太大会造成内存溢出,可以控制max_heap_table_size控制Memory表的大小。如果数据是临时的,必须立即可用得到,那么可以放在内存中。存储的数据突然间丢失也没有太大关系。

Federated引擎:

访问远程表。

Federated引擎是访问其他的MySQL服务器的一个代理,提供了一种很好的跨服务器的灵活性,但是有很多问题。因此默认是禁用的。

Merge引擎:

管理多个MyISAM表构成的表集合。

NDB引擎:

MySQL集群专用存储引擎。

NDB引擎主要用于MySQL Cluster分布式集群环境。

相关推荐
阳光九叶草LXGZXJ19 分钟前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
字节渡客1 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring
OnlineProxy3 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
辻弋2015 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_5 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼6 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川6 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路6 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna7 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白7 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库