MySQL事务是确保数据一致性的核心机制,它将多个SQL操作封装为一个不可分割的执行单元。当事务中的任一操作失败,整个事务会回滚到初始状态,避免数据半更新导致的逻辑错误。
事务具备ACID四大特性:原子性(Atomicity)保证操作全成功或全失败;一致性(Consistency)确保数据库从一个合法状态转向另一个合法状态;隔离性(Isolation)控制并发事务间的影响程度;持久性(Durability)使已提交的数据永久保存,即使系统崩溃也不丢失。
MySQL默认每条SQL语句自动提交(autocommit=1),若需显式控制事务,须先关闭自动提交:SET autocommit = 0;随后使用BEGIN或START TRANSACTION开启事务,COMMIT提交变更,ROLLBACK撤销未提交的操作。一条事务可跨多张表、多次DML语句(INSERT/UPDATE/DELETE),但不支持DDL语句(如CREATE、ALTER)——它们会隐式触发COMMIT。
隔离级别决定了并发事务间的可见性规则。MySQL支持READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ(默认)和SERIALIZABLE。低级别提升并发性能但易出现脏读、不可重复读;高级别保障数据稳定却增加锁竞争。例如,在REPEATABLE READ下,同一事务内多次SELECT返回相同结果,而InnoDB通过Next-Key Lock防止幻读。

创意图AI设计,仅供参考
实战中需谨慎处理长事务:它占用资源、阻塞DDL、拉高undo日志压力。建议用SHOW ENGINE INNODB STATUS检查活跃事务,配合information_schema.INNODB_TRX监控运行时长与锁等待。业务代码应明确设置超时(innodb_lock_wait_timeout),并避免在事务内执行耗时操作(如HTTP请求、文件读写)。
错误捕获同样关键。应用层需监听SQLSTATE或MySQL错误码(如1205死锁、1213锁等待超时),对可重试场景实施指数退避重试;对违反约束的错误(如主键冲突),则应优化前置校验或调整业务逻辑。合理使用SAVEPOINT还能实现部分回滚,增强事务灵活性。