type
status
date
slug
summary
tags
category
icon
password
前言
MyISAM = My + ISAM
,如同 MySQL = My + SQL
的命名方式一般,MyISAM 也是由 My 与 ISAM 合成而来。整理定义
What is ISAM?
索引顺序存取方法(ISAM, Indexed Sequential Access Method)最初是IBM公司发展起来的一个文件系统,可以连续地(按照他们进入的顺序)或者任意地(根据索引)记录任何访问。每个索引定义了一次不同排列的记录。现在这个概念用在许多场合:
- 特指IBM公司的ISAM产品
- 数据库系统中提供用户接口从数据文件中检索数据。
在ISAM系统,数据组织成有固定长度的记录,按顺序存储的。
What is MyISAM?
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参照完整性与并发违规处理机制,后来就逐渐取代MyISAM。
每个MyISAM资料表,皆由存储在硬盘上的3个文件所组成,每个文件都以资料表名称为文件主名,并搭配不同扩展名区分文件类型:
.frm
--存储资料表定义,此文件非MyISAM引擎的一部分。
.MYD
--存放真正的资料。
.MYI
--存储索引信息。
复述展开
MyISAM 是 MySQL的一种数据库引擎,(MyISAM 在MySQL 5.5版本之前还是默认引擎,之后是innoDB),它由 ISAM 改良而来,支持全文索引,不支持事务ACID,表级锁定。
MySQL 中 innoDB VS MyISAM
特性/属性 | MyISAM | InnoDB |
事务支持 | 不支持 | 支持,遵循ACID原则 |
锁定粒度 | 表级锁定 | 行级锁定 |
全文索引 | 支持 | MySQL 5.6及以上版本支持 |
外键约束 | 不支持 | 支持 |
哈希索引 | 不支持 | 不支持 |
数据存储方式 | 磁盘 | 磁盘 |
MVCC | 不支持 | 支持 |
空间使用 | 相对较小 | 相对较大,因为InnoDB会为每个表创建一个表空间 |
数据安全性 | 较低,崩溃后恢复困难 | 较高,支持事务和崩溃后的自动恢复 |
读写性能 | 读取速度较快,但写入时需要锁定整个表 | 读写性能都很高,特别是在并发环境下 |
数据缓存 | 只缓存索引 | 缓存索引和行数据 |
BLOB/TEXT字段 | 可以被索引和搜索 | 只有前768字节可以被索引 |
表的物理组织形式 | MyISAM表是表级碎片,可以进行表级别的优化和修复 | InnoDB表是行级碎片,无法进行优化和修复 |
适用场景 | 读操作多于写操作,不需要事务支持的应用 | 大量读写操作,需要事务支持的应用 |
参考:
MySQL中各个引擎的对比:【Comparison of MySQL database engines - Wikipedia】
Name | Vendor | License | Under active development | MySQL versions | MariaDB versions | |
Calpont | GPL | Yes | Yes | None | 10.5.4 - present | |
Facebook | GPLv2 | Yes | Yes | None | 10.2 - present | |
Mroonga | Groonga Project | GPL | No | Yes | None | 10.0 - present |
Kentoku Shiba | GPL | Yes | Yes | None | 10.0 - present | |
GPL | No | Yes | None | 5.1 - present | ||
GPL | No | Yes | None | 10.0 - present | ||
GPL | Yes | No | None | ? - present | ||
GPL | No | Yes | None | 10.5 - present | ||
SEQUENCE | MariaDB | GPL | No | Yes | None | 10.0 - present |
Oracle | GPL | No | Yes | 5.0 - present | 5.1 - present | |
Oracle | Yes | No | ? - 5.0 | None | ||
Oracle | GPL | No | Yes | 5.0 - present | 5.1 - present | |
Oracle | GPL | No | Yes | 5.0 - present | 5.1 - present | |
Oracle | GPL | Yes | No | ? | None | |
Oracle | GPL | ? | No | 5.0 - present | ? | |
Oracle | GPL | Yes | Yes | 3.23 - present | 5.1 - present | |
Oracle | GPL | No | Yes | 3.23 - present | 5.1 - present | |
Oracle | GPL | No | No | 3.23 - present | 5.1 - present | |
Oracle | GPLv2 | Yes | Yes | ? | None | |
Oracle | GPLv2 | No | No | None | 5.2 - present | |
Oracle | GPL | No | Yes | 8.0 - present | None | |
Percona | Modified GPL | Yes | No | None | 5.5 - present | |
Percona | GPL | Yes | Yes | None | 5.1 - 10.1 | |
Sphinx Technologies Inc. | GPL | No | No | None | 5.2 - present |
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
- 作者:eachenkuang
- 链接:https://kuangyichen.com/article/industry-day54
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。