CentOS 上 MySQL 存储引擎选择指南
一 核心结论与默认策略
二 常见存储引擎对比与适用场景
| 引擎 | 关键特性 | 典型场景 | 主要限制 |
|---|---|---|---|
| InnoDB | 事务 ACID、行级锁、外键、MVCC、崩溃恢复 | 订单、支付、用户账户、需要一致性与高并发的业务 | 内存占用相对更高 |
| MyISAM | 表级锁、全文索引(在老版本更突出)、读多写少表现好 | 报表查询、只读/少写字典表、历史静态数据 | 不支持事务与外键,崩溃后恢复弱,写并发瓶颈明显 |
| Memory(Heap) | 数据存于内存、访问极快 | 会话/缓存/临时中间结果 | 重启数据丢失,不支持 BLOB/TEXT,表级锁 |
| Archive | 高压缩、仅 INSERT/SELECT | 日志归档、冷数据长期保存 | 不支持索引,不适合频繁查询 |
| CSV | 数据以 CSV 文件存储 | 与外部系统数据交换 | 事务/索引能力弱,适合轻量 ETL |
| Federated | 可访问远程 MySQL 表 | 跨库/跨实例查询聚合 | 依赖网络,事务与一致性受限 |
| Blackhole | 不落盘,仅转发日志 | 复制链路中间层、审计/分流 | 不持久化数据 |
| 说明:InnoDB 为通用首选;MyISAM 适合读多写少且无需事务;Memory 适合临时/缓存;Archive/CSV 面向特定用途。 |
三 选型决策要点
四 在 CentOS 上的查看与切换操作
SHOW ENGINES;SET default_storage_engine=InnoDB;/etc/my.cnf 或 /etc/my.cnf.d/*.cnf[mysqld] 下加入:default-storage-engine=InnoDBALTER TABLE 表名 ENGINE=InnoDB;CREATE TABLE t (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
) ENGINE=InnoDB;