MySQL的事务具有ACID四个属性:
- Atomicity (原子性)
一个事务( transaction)中包含的所有操作,要么全都做,要么全都不做。 ensures consistency。 - Consistency (一致性)
事务必须使数据库从一个一致性状态变换到另一个一致性状态。 - Isolation (隔离性)
一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的。 - Durability (持久性)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
举例来说:
如果一个从用户账户中转移100这次事务完成后,转账操作就应该是永久的。 即便后来系统崩溃,转账也不应该被回滚。
这四个属性共同确保了数据库事务处理具有:
- 一致性:数据总是处于一致的可预期的状态。
- 隔离性:一个事务的执行不能被其他事务干扰。
- 持久性:被提交的事务是永久的,即便后来发生故障也不会丢失。
- 原子性:事务的操作要么全部完成,要么完全不做。
它们保障了MySQL事务具有足够的完整性和正确性。