一个事务是被视为单个、不可分割单位的一组操作——它们要么一起成功(COMMIT),要么一起失败(ROLLBACK)。事务保证ACID属性,确保即使在出现故障或并发访问的情况下,数据也保持正确和一致。
事务——全有或全无
;
accounts balance balance id ;
accounts balance balance id ;
;
一个事务是被视为单个、不可分割单位的一组操作——它们要么一起成功(COMMIT),要么一起失败(ROLLBACK)。事务保证ACID属性,确保即使在出现故障或并发访问的情况下,数据也保持正确和一致。
;
accounts balance balance id ;
accounts balance balance id ;
;
经典例子:资金转账。借记和贷记都必须发生,或者都不发生——否则资金会丢失或凭空产生。事务保证了这一点:出错时,ROLLBACK会撤销所有更改,使数据库恢复到什么都没有发生的状态。
A — ATOMICITY → all operations succeed or all fail (no partial transactions)
C — CONSISTENCY → the database moves from one valid state to another (constraints hold)
I — ISOLATION → concurrent transactions don't interfere (as if run sequentially)
D — DURABILITY → once committed, changes survive crashes (persisted permanently)
这些属性是使关系数据库对关键数据可靠的原因。
Without transactions, a failure mid-way leaves data in an inconsistent state:
money debited from one account but not credited to another → data corruption.
Atomicity (all-or-nothing) prevents this — the cornerstone of data integrity for
any multi-step operation (transfers, orders with line items, etc.).
When many transactions run concurrently, ISOLATION controls what they can see of
each other's uncommitted changes. Isolation LEVELS (Read Committed, Repeatable Read,
Serializable) trade off consistency vs performance — higher isolation = more correct
but more locking/contention. (A deeper topic on its own.)
事务和ACID属性是可靠数据库的基础——它们保证即使在故障和并发访问的情况下数据也保持正确和一致,这对于任何处理重要数据的应用程序都是必不可少的,因此理解它们很重要。
核心价值是原子性(全有或全无):任何涉及多个步骤的操作(资金转账、创建包含行项目的订单、更新相关记录)必须完全成功或完全失败——否则操作中途出现故障会使数据库处于损坏、不一致的状态(经典例子:资金已借记但未贷记)。
事务通过COMMIT/ROLLBACK保证了这一点,使其对多步骤操作中的数据完整性至关重要。
理解完整的ACID属性——原子性(全有或全无)、一致性(有效状态)、隔离性(并发事务互不干扰)和持久性(已提交的更改在崩溃时幸存)——解释了为什么关系数据库对于关键数据(金融、订单、库存)是可信的。
了解隔离性控制并发行为(隔离级别在一致性和性能之间进行权衡)连接到更深层的并发主题。
由于数据完整性对可靠应用程序至关重要,而事务(提供原子性和ACID保证)是确保多步骤操作不会损坏数据、数据库在故障和并发下保持一致的机制,理解事务和ACID是构建具有可靠数据的应用程序的重要、基础知识——它是数据库可靠性的基石,也是常见的、重要的面试话题,展示了对数据库如何保证正确性的理解。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠