存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也被称为表类型。
MySQL的存储引擎是数据库的底层核心组件,它决定了数据如何存储、如何索引、是否支持事务以及如何实现并发控制。可以将其理解为数据库的“发动机”或“文件系统格式”,不同的引擎为数据提供了不同的能力和特性。
MySQL最大的特点之一就是采用了插件式存储引擎架构,可以根据应用需求,为不同的表选择最合适的引擎。
默认表的存储引擎为innodb。
-- 查询建表语句--默认存储引擎:InnoDB show create table account; -- 查看当前数据库支持的存储引擎 show engines; -- 创建表my_myisam,并指定myisam存储引擎 create table my_myisam ( id int, name varchar(10) )engine = myisam;存储引擎特点
innodb:是一种兼顾高可靠性和高性能的通用存储引擎,在mysql 5.5 之后,Innodb是默认的mysql存储引擎。
| 特性维度 | InnoDB(MySQL 5.5+默认引擎) | MyISAM(MySQL 5.5前默认) | Memory | Archive |
|---|---|---|---|---|
| 主要用途 | OLTP(在线事务处理),需要事务安全、高并发、数据完整性。 | OLAP(只读或读多写少),如数据仓库、报表。Web应用已基本淘汰。 | 临时表、缓存,数据需在内存中,速度极快。 | 归档存储,日志、审计等历史数据。 |
| 事务支持 | ✅完整支持(ACID)。 | ❌ 不支持。 | ❌ 不支持。 | ❌ 不支持。 |
| 锁粒度 | 行级锁,支持高并发写。 | 表级锁,写并发性能差。 | 表级锁。 | 行级锁(插入时)。 |
| 外键支持 | ✅支持,保证引用完整性。 | ❌ 不支持。 | ❌ 不支持。 | ❌ 不支持。 |
| 索引类型 | 聚簇索引,主键查询极快。 | 非聚簇索引,索引与数据分离。 | 哈希索引(默认),等值查询快。 | 不支持索引(仅INSERT/SELECT)。 |
| 数据恢复 | 崩溃后自动恢复(通过redo log)。 | 崩溃后需检查/修复表。 | 服务器重启后数据丢失。 | 不支持(操作需全表扫描)。 |
| 全文索引 | ✅ MySQL 5.6+ 支持。 | ✅ 支持(较早版本常用)。 | ❌ 不支持。 | ❌ 不支持。 |
| 存储限制 | 64TB | 256TB | 受max_heap_table_size限制 |
总结:
95%以上的场景,使用默认的
InnoDB。它提供了事务安全、行级锁、崩溃恢复和外键约束,是保证数据一致性和完整性的基石。特殊场景,按需选择:
MEMORY:用于临时表、会话缓存,速度极快。Archive:用于日志归档,压缩比极高。MyISAM:除非是遗留系统或只读数据仓库,否则应避免使用。
学习记录,仅供参考。