为什么innodb支持事务
ACID特性
为了实现这些特性,InnoDB使用了以下关键技术:
锁+redolog+unlog+事务隔离级别
详细如下
InnoDB支持事务是因为它实现了ACID特性,ACID是事务管理的四个基本特性,分别为:
- 原子性 (Atomicity):事务中的所有操作要么全部成功,要么全部失败。即使发生错误,事务也不会留下不完整的操作。
- 一致性 (Consistency):事务开始时和结束时,数据库都必须处于一致的状态。事务必须保证数据的完整性约束不会被破坏。
- 隔离性 (Isolation):事务的执行不应受到其他事务的干扰。即使有其他事务并发执行,每个事务都应该像是在数据库中独立执行一样。
- 持久性 (Durability):事务一旦提交,它对数据库的修改将是永久性的,即使系统发生崩溃,已提交的数据也不会丢失。
为了实现这些特性,InnoDB使用了以下关键技术:
1. 锁机制:
InnoDB使用行级锁(而不是表级锁)来确保事务之间的隔离性。它通过锁定不同的记录,来防止其他事务在同一时间修改这些记录,避免数据的不一致性。
2. 事务日志 (Redo Log):
InnoDB使用事务日志来保证持久性。所有的修改操作都会先记录到日志中,然后才会实际修改数据库。当系统崩溃后,InnoDB会通过重做日志恢复数据库的状态。
3. 回滚机制 (Undo Log):
InnoDB通过回滚日志来保证原子性。如果事务没有完成,回滚日志会使得之前的操作可以恢复到事务开始之前的状态,从而确保数据库一致性。
4. 隔离级别:
InnoDB支持多种隔离级别(如:读未提交、读已提交、可重复读、串行化),通过隔离级别的设置,可以在保证事务隔离性的同时,提供不同程度的并发执行。
通过这些机制,InnoDB能够确保在多用户并发访问数据库时,事务能正确、安全地执行。