用途:为 MariaDB 新建表选择存储引擎、从 MyISAM 迁移到 InnoDB、理解各引擎行为差异与 ACID 语义时提供确定性指导。
主要能力:给出引擎决策树与特性矩阵(ACID、锁粒度、外键、MVCC、崩溃安全、全文、空间索引、是否默认)。核心结论:InnoDB 是 99% 场景的默认选择,具备 ACID、行锁、MVCC、外键与崩溃安全;MyISAM 无事务、无外键、无崩溃安全,不得用于新表;Aria 可作 MyISAM 替代,用于系统类数据,TRANSACTIONAL=1 仅表示崩溃安全而非支持 BEGIN/COMMIT,且为表级锁;ColumnStore 仅面向分析,属独立发行版,不可用于 OLTP;MEMORY 重启丢数据,仅用于可重建的临时查找表,不支持 TEXT/BLOB,默认 HASH 索引;Spider 用于跨节点分片,其内置高可用在 10.7.5 移除,需配合 Galera 或复制;CONNECT 联邦 CSV/XML/JSON/ODBC/JDBC/MongoDB 等外部数据,不适合高吞吐写入。
使用方式:建表时始终显式写出 ENGINE,并指定 ROW_FORMAT=DYNAMIC 与 DEFAULT CHARSET=utf8mb4。审计遗留表可用 information_schema.tables 查询非 InnoDB/Aria 引擎;引擎转换用 ALTER TABLE x ENGINE=InnoDB, ALGORITHM=COPY, LOCK=SHARED,引擎变更必须整表重写,不可用 ALGORITHM=INSTANT,且应避开高峰。Spider 需 INSTALL SONAME 'ha_spider' 并创建后端 SERVER。
限制:跨引擎事务中 MyISAM 写入会立即提交,无法保证全有或全无;外键禁止用于分区表且不能跨引擎;JOIN 联邦表会逐行拉取且远端无统计信息。版本要点:10.2 起 InnoDB 为默认、DYNAMIC 为默认行格式;10.7.5 移除 Spider 高可用;11.6 默认字符集由 latin1 改为 utf8mb4。