logo
Database Design

Transactions

事务的基本概念与状态

Transaction 是一组 database operations,被视为一个 "single unit of work"。要么全部成功,要么全部失败。这样在系统部分故障时仍能保证 data integrity。并非所有 database 都支持 ACID transactions,通常是因为它们优先选择了其他优化目标,而这些目标与 ACID 难以同时实现。

一般来说,relational databases 支持 ACID,non-relational databases 不支持(也有例外)。

States

Transaction 在 database 中可能处于以下状态:

transaction-states

Active

Transaction 正在执行,这是每个 transaction 的初始状态。

Partially Committed

当 transaction 执行到最后一个操作时,进入 partially committed。

Committed

Transaction 所有操作成功执行后即 committed。所有结果都永久写入 database。

Failed

如果 database recovery system 的检查失败,transaction 进入 failed 状态,无法继续。

Aborted

一旦进入 failed,recovery manager 会回滚所有写操作,把 database 恢复到 transaction 开始前的状态,此时 transaction 为 aborted。

Database recovery module 会在 aborted 之后选择:

  • Restart the transaction
  • Kill the transaction

Terminated

如果不需要 rollback,或 transaction 已经 committed,系统状态一致并准备好处理新的 transaction,此时旧 transaction 终止。

相关练习题

Transactions

暂无相关练习题