应优先选InnoDB因MyISAM不支持事务、行锁、外键及崩溃恢复sysbench oltp_read_write会失败仅oltp_point_select可运行但无参考价值真实OLTP场景必须用InnoDB。怎么选InnoDB还是MyISAM做基准测试先看业务是否支持事务MyISAM不支持事务、行锁、外键也不支持崩溃恢复——这意味着只要测试里出现 COMMIT、ROLLBACK 或者 SELECT ... FOR UPDATE它就直接报错或行为异常。Sysbench 的 oltp_read_write 脚本默认带事务用 MyISAM 运行会失败而 oltp_point_select只读勉强能跑但结果毫无参考价值它掩盖了写入瓶颈也测不出并发更新时的锁争用。真实 OLTP 场景电商、订单、账户必须用 InnoDB别在 MyISAM 上浪费时间跑“高 TPS”假数据MyISAM 仅适合极少数场景静态报表库、日志归档表、纯读全表扫描低并发且你明确接受单点写入阻塞和宕机丢数据风险SHOW ENGINES; 确认支持状态Percona Server 或 MySQL 8.0 默认已禁用 MyISAMSUPPORTNO 就别试了sysbench 测试命令里哪些参数会让 InnoDB 和 MyISAM 结果完全不可比很多人直接套用同一套 sysbench --testoltp_read_write 命令对比两个引擎但忽略关键配置差异InnoDB 严重依赖 innodb_buffer_pool_size而 MyISAM 几乎不走 buffer pool只靠 OS page cacheMyISAM 的 key_buffer_size 只缓存索引数据页全靠磁盘随机读。必须分别调优InnoDB 测试前设 innodb_buffer_pool_size 70% RAMMyISAM 则需加大 key_buffer_size 并确保 read_buffer_size 足够否则 IO 成瓶颈主因--oltp-table-size 设太大如 1000 万行MyISAM 的 REPAIR TABLE 和 OPTIMIZE TABLE 会卡死InnoDB 却能在线 DDLMyISAM 不支持 --mysql-storage-engine 参数自动建表建表语句得手写 ENGINEMyISAM否则 sysbench prepare 默认建 InnoDB 表响应时间抖动大、TPS 波动剧烈大概率是 MyISAM 表级锁在拖后腿跑 sysbench --threads32 run 时InnoDB 通常呈现平滑的 QPS 曲线而 MyISAM 往往在 5–10 秒内反复跌零——这不是机器问题是写操作INSERT/UPDATE触发整表锁所有其他线程排队等待。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。