存储引擎
存储引擎(Storage Engine)是数据库管理系统中负责数据存储和检索的部分。之前在MySQL的历史地位中曾经讲过,存储引擎是可插拔的。5.5之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。
9大存储引擎
可以通过 show engines 查看数据库的存储引擎
- ARCHIVE:
○ 特性:用于存储大量未修改的数据,如日志信息。
○ 压缩:数据压缩存储,节省空间。
○ 事务性:不支持事务处理。
○ 支持的操作:只支持插入和选择操作,不支持更新和删除。 - BLACKHOLE:
○ 特性:被称为“黑洞”存储引擎,写入的数据会消失,相当于/dev/null。
○ 用途:用于复制数据到其他服务器时的中继,或者用于测试。
○ 事务性:不支持事务处理。 - MRG_MYISAM:
○ 特性:合并MyISAM表,可以将多个相同的MyISAM表合并为一个表进行查询。
○ 事务性:不支持事务处理。
○ 用途:适用于需要合并多个相同结构表的场景。 - FEDERATED:
○ 特性:允许访问远程MySQL服务器上的表。
○ 事务性:不支持事务处理。
○ 用途:适用于需要从远程服务器访问数据的场景。 - MyISAM:
○ 特性:非事务性存储引擎,表级锁定。
○ 用途:适用于读密集型应用,支持全文索引。 - PERFORMANCE_SCHEMA:
○ 特性:用于监控数据库性能。
○ 用途:系统表,用于收集数据库性能相关的信息。 - InnoDB:
○ 特性:支持事务、行级锁定和外键。
○ 默认:从MySQL 5.5.5开始成为默认存储引擎。
○ 事务性:支持事务处理。 - MEMORY:
○ 特性:基于哈希存储,数据存储在内存中,访问速度快。
○ 持久性:数据在数据库重启后会丢失。
○ 事务性:支持事务处理。 - CSV:
○ 特性:将表存储为CSV文件。
○ 事务性:不支持事务处理。
○ 用途:适用于需要将数据导出为CSV格式的场景。
Innodb和MyISAM的区别
- 事务和外键
○ InnoDB支持事务和外键,具有安全性和完整性,适合大量insert或update操作
○ MyISAM不支持事务和外键,它提供高速存储和检索,适合大量的select查询操作 - 锁机制
○ InnoDB支持行级锁,锁定指定记录。
○ MyISAM支持表级锁,锁定整张表。 - 并发处理能力
○ MyISAM使用表锁,会导致写操作并发率低,读之间并不阻塞,读写阻塞。
○ InnoDB读写阻塞可以与隔离级别有关,可以采用多版本并发控制(MVCC)来支持高并发 - 索引结构
○ InnoDB使用聚簇索引,索引和记录在一起存储
○ MyISAM使用非聚簇索引,索引和记录分开分开存储。 - 存储文件
○ InnoDB表对应两个文件,一个.frm表结构文件,一个.ibd数据文件。InnoDB表最大支持64TB;
○ MyISAM表对应三个文件,一个.frm表结构文件,一个MYD表数据文件,一个.MYI索引文件。MyISAM表默认限制是256TB。