MySQL事务是确保数据一致性与可靠性的核心机制,其本质是将多个数据库操作封装为一个不可分割的逻辑单元,要么全部成功,要么全部回滚。

建议图AI生成,仅供参考
事务遵循ACID四大特性:原子性(Atomicity)保证操作全执行或全不执行;一致性(Consistency)确保事务前后数据状态合法;隔离性(Isolation)避免并发操作相互干扰;持久性(Durability)保障提交后的结果永久保存在磁盘。
MySQL通过redo log(重做日志)实现持久性与原子性——事务提交前先写入redo log,崩溃恢复时可重放;通过undo log(回滚日志)支撑原子性与MVCC——未提交事务的变更可借助undo log回退,已提交但被覆盖的数据版本亦可追溯。
隔离性由锁机制与多版本并发控制(MVCC)协同完成。InnoDB默认使用READ COMMITTED和REPEATABLE READ隔离级别,后者通过next-key lock(间隙锁+记录锁)防止幻读,并依托隐藏字段DB_TRX_ID和DB_ROLL_PTR构建版本链,使不同事务按自身快照视图读取对应数据版本。
显式事务以START TRANSACTION或BEGIN开启,COMMIT提交变更,ROLLBACK撤销未提交操作。自动提交(autocommit=1)下每条DML语句隐式成独立事务;关闭后需手动控制,适合批量更新、转账等强一致性场景。
实战中需警惕长事务——它会持续占用undo log、阻塞purge线程、加剧锁竞争;避免在事务内执行HTTP调用、文件操作等非数据库动作;高频小事务宜保持简短,复杂业务逻辑建议前置校验、减少锁持有时间。
通过INFORMATION_SCHEMA.INNODB_TRX可监控运行中事务,SHOW ENGINE INNODB STATUS分析锁等待,配合slow query log定位隐式事务或超时问题。合理设计索引、选择合适隔离级别、精简事务范围,是平衡性能与一致性的关键实践。