5月30日 19:50

MariaDB 存储引擎有哪些?不同场景怎么选?

MariaDB 的存储引擎不是越多越好,而是要按事务、读写比例、数据规模和运维成本来选。默认优先 InnoDB,因为它支持事务、行级锁、崩溃恢复和外键,适合绝大多数 OLTP 系统。Aria 更像 MyISAM 的加强版,适合临时表、读多写少或不需要完整事务的场景;ColumnStore 面向分析查询;Spider 用来做分片和跨节点访问;MyRocks 适合写入密集、压缩率敏感的业务。

追问

为什么多数业务表建议用 InnoDB?

InnoDB 的优势不只是事务,还包括崩溃恢复、MVCC、行级锁和成熟生态。订单、账户、库存这类需要一致性的表,不应为了读性能换成非事务引擎。

Aria 和 MyISAM 有什么区别?

MyISAM 读性能不错,但表级锁明显,不支持事务,崩溃恢复弱。Aria 是 MariaDB 对这类场景的改进选择,但仍不能替代 InnoDB 做核心交易表。

ColumnStore 适合放业务明细表吗?

不太适合。ColumnStore 优势是列式压缩和批量分析,适合报表和历史数据查询;频繁按主键更新、单行查询很多时会难受。

更换存储引擎有什么坑?

ALTER TABLE 切引擎可能锁表、耗时长,还可能遇到索引长度、外键或数据类型兼容问题。大表建议在线变更或分批迁移。

写段 SQL

sql
SHOW ENGINES; CREATE TABLE event_log (id BIGINT PRIMARY KEY, created_at DATETIME, payload TEXT) ENGINE=InnoDB;
标签:MariaDB