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分布式集群环境。

相关推荐
牛奶咖啡1323 分钟前
关系数据库MySQL的常用基础命令详解实战
数据库·mysql·本地远程连接到mysql·创建mysql用户和密码·修改mysql用户的密码·设置mysql密码的使用期限·设置和移除mysql用户的权限
ANYOLY1 小时前
Redis 面试宝典
数据库·redis·面试
鲲志说1 小时前
数据洪流时代,如何挑选一款面向未来的时序数据库?IoTDB 的答案
大数据·数据库·apache·时序数据库·iotdb
没有bug.的程序员1 小时前
MVCC(多版本并发控制):InnoDB 高并发的核心技术
java·大数据·数据库·mysql·mvcc
脑花儿3 小时前
ABAP SMW0下载Excel模板并填充&&剪切板方式粘贴
java·前端·数据库
SELSL3 小时前
SQLite3的API调用实战例子
linux·数据库·c++·sqlite3·sqlite实战
洲覆3 小时前
Redis 核心数据类型:从命令、结构到实战应用
服务器·数据库·redis·缓存
傻啦嘿哟3 小时前
Python SQLite模块:轻量级数据库的实战指南
数据库·python·sqlite
维尔切4 小时前
HAProxy 负载均衡器
linux·运维·数据库·负载均衡
什么半岛铁盒4 小时前
C++项目:仿muduo库高并发服务器-------Channel模块实现
linux·服务器·数据库·c++·mysql·ubuntu