问题

什么是数据库事务?

答案

核心概念

数据库事务(Transaction)是指作为单个逻辑工作单元执行的一系列数据库操作,这些操作要么全部成功执行,要么全部失败回滚,是数据库并发控制的基本单位。

ACID四大特性

事务必须满足ACID四个特性:

  1. 原子性(Atomicity)
    • 事务中的所有操作要么全部完成,要么全部不完成
    • 不可能停滞在中间某个环节
    • 事务执行过程中发生错误,会回滚到事务开始前的状态
  2. 一致性(Consistency)
    • 事务必须使数据库从一个一致性状态变换到另一个一致性状态
    • 一致性与原子性、隔离性、持久性密切相关
  3. 隔离性(Isolation)
    • 多个事务并发执行时,一个事务的执行不应影响其他事务的执行
    • 数据库系统提供一定的隔离机制,保证事务在独立环境中运行
  4. 持久性(Durability)
    • 一旦事务提交,对数据库的改变是永久性的
    • 即使系统故障也不会丢失

MySQL事务使用示例

-- 开启事务
START TRANSACTION;
-- 或使用 BEGIN;

-- 执行业务操作
UPDATE account SET balance = balance - 100 WHERE user_id = 1;
UPDATE account SET balance = balance + 100 WHERE user_id = 2;

-- 提交事务
COMMIT;

-- 或者回滚事务
-- ROLLBACK;

典型应用场景

  1. 银行转账:从A账户扣款、向B账户加款必须同时成功或同时失败
  2. 订单处理:减库存、生成订单、扣减余额等操作需要原子性
  3. 数据迁移:批量数据操作需要保证一致性

面试要点总结

  • 事务是保证数据一致性的核心机制
  • 必须满足ACID四大特性
  • InnoDB存储引擎支持事务,MyISAM不支持
  • 事务的实现依赖于Undo Log(原子性)、Redo Log(持久性)、锁机制和MVCC(隔离性)
  • 合理使用事务可以保证数据完整性,但过长事务会影响并发性能