MySQL事务的基本特性由ACID四个核心属性构成,它们确保数据库在事务处理过程中的正确性和可靠性。
原子性(Atomicity)
事务是一个不可分割的最小操作单元,所有操作要么全部成功执行,要么全部不执行。如果事务中某条语句执行失败,整个事务将回滚到开始前的状态。
例如:转账操作中,从A账户扣款和向B账户加款必须同时成功或同时失败。 MySQL通过undo log实现原子性,在出错时利用日志进行回滚。一致性(Consistency)
事务执行前后,数据库必须处于一致状态,满足预定义的业务规则和约束(如主键、外键、唯一性等)。
比如:转账后两个账户总金额应保持不变。 一致性由数据库的约束机制和应用逻辑共同保障。隔离性(Isolation)
多个事务并发执行时,一个事务的操作不应影响其他事务,彼此之间相互隔离。
MySQL提供多种隔离级别:读未提交、读已提交、可重复读、串行化。 默认使用“可重复读”(REPEATABLE READ),通过MVCC和锁机制实现。持久性(Durability)
一旦事务提交,其对数据库的修改就是永久性的,即使系统崩溃也不会丢失。
MySQL通过redo log实现持久性,提交时将日志写入磁盘。 重启后可通过日志恢复已提交的数据变更。基本上就这些。ACID特性的协同工作,保证了MySQL在复杂并发环境下数据的准确与安全。理解这些特性有助于合理设计事务逻辑和处理并发问题。
