🗒️Day54 【概念解析】MyISAM
00 分钟
2023-11-14
2023-11-16
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?

MyISAMMySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参照完整性并发违规处理机制,后来就逐渐取代MyISAM。
每个MyISAM资料表,皆由存储在硬盘上的3个文件所组成,每个文件都以资料表名称为文件主名,并搭配不同扩展名区分文件类型:
  1. .frm--存储资料表定义,此文件非MyISAM引擎的一部分。
  1. .MYD--存放真正的资料。
  1. .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
 
上一篇
Day55 【概念解析】InnoDB
下一篇
Day53 【概念解析】MySQL存储引擎

评论
Loading...