SQL 面试题 目录

SQL 中什么是事务 (Transaction)?

推荐答案

在 SQL 中,事务(Transaction)是指一组数据库操作,这些操作要么全部成功执行,要么全部失败回滚。事务是数据库管理系统(DBMS)中保证数据一致性和完整性的重要机制。事务通常具有以下四个特性,简称 ACID:

  • 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会停留在中间状态。
  • 一致性(Consistency):事务执行前后,数据库的状态必须保持一致。
  • 隔离性(Isolation):多个事务并发执行时,一个事务的操作不会影响其他事务。
  • 持久性(Durability):一旦事务提交,其对数据库的修改就是永久性的,即使系统发生故障也不会丢失。

本题详细解读

1. 事务的基本概念

事务是数据库操作的基本单位,通常用于处理复杂的业务逻辑。例如,银行转账操作涉及两个账户的更新,这两个操作必须作为一个整体来执行,否则会导致数据不一致。

2. 事务的 ACID 特性

  • 原子性:事务中的操作要么全部成功,要么全部失败。例如,转账操作中,如果从一个账户扣款成功但向另一个账户存款失败,那么整个事务会回滚,扣款操作也会被撤销。

  • 一致性:事务执行前后,数据库的状态必须满足预定义的规则。例如,转账操作后,两个账户的总金额应该保持不变。

  • 隔离性:多个事务并发执行时,每个事务的操作对其他事务是透明的。例如,一个事务在读取数据时,不会被其他事务的未提交修改所影响。

  • 持久性:一旦事务提交,其对数据库的修改就是永久性的。即使系统崩溃,事务的结果也不会丢失。

3. 事务的控制语句

在 SQL 中,事务通常通过以下语句来控制:

  • BEGIN TRANSACTIONSTART TRANSACTION:开始一个新的事务。
  • COMMIT:提交事务,使所有操作永久生效。
  • ROLLBACK:回滚事务,撤销所有未提交的操作。

4. 事务的隔离级别

SQL 标准定义了四种事务隔离级别,用于控制事务之间的可见性:

  • 读未提交(Read Uncommitted):最低的隔离级别,允许事务读取未提交的数据。
  • 读已提交(Read Committed):事务只能读取已提交的数据。
  • 可重复读(Repeatable Read):确保在同一事务中多次读取同一数据时,结果一致。
  • 串行化(Serializable):最高的隔离级别,确保事务串行执行,避免并发问题。

5. 事务的应用场景

事务广泛应用于需要保证数据一致性和完整性的场景,例如:

  • 银行系统中的转账操作。
  • 电商系统中的订单处理。
  • 库存管理系统中的库存更新。

通过使用事务,可以确保这些复杂操作在出现错误时能够回滚,避免数据不一致的情况发生。

纠错
反馈