什么是数据库事务机制?

数据库事务机制是确保数据操作在并发和故障情况下保持一致性完整性可靠性的核心技术。

事务的四大特性(ACID)

  • 原子性(Atomicity)
    事务中的所有操作要么全部成功,要么全部失败回滚。通过 回滚日志(Undo Log) 实现,记录修改前的数据,用于异常时撤销操作。
  • 一致性(Consistency)
    事务执行前后,数据库必须满足所有预定义的业务规则(如唯一约束、外键约束)。由应用层逻辑和数据库约束共同保证。
  • 隔离性(Isolation)
    并发执行的事务之间互不干扰。通过 锁机制多版本并发控制(MVCC) 实现,不同隔离级别(如读已提交、可重复读)解决脏读、不可重复读、幻读等问题。
  • 持久性(Durability)
    事务提交后,修改永久保存,即使系统故障也不丢失。依赖 重做日志(Redo Log) ,故障恢复时重放日志。

事务隔离级别与并发问题

事务隔离级别与并发问题

事务的实现机制

  • 锁机制
    • 共享锁(S Lock):读锁,允许其他读,阻塞写。
    • 排他锁(X Lock):写锁,阻塞其他读写。
    • 死锁处理:超时机制或等待图检测后回滚。
  • 多版本并发控制(MVCC)
    • 为每条数据维护多个版本,读操作访问事务开始时的快照版本,写操作生成新版本。
    • 优点:读不阻塞写,提高并发性能(如InnoDB引擎)。
  • 日志机制
    • Undo Log:记录修改前的数据,支持回滚。
    • Redo Log:记录修改后的数据,确保持久性。