事务与并发
引入
词汇
| English | 释义 | 拼音 |
|---|---|---|
| transaction/trænˈsækʃn/ | 事务 | shì wù |
| atomicity | 原子性 | yuán zi xìng |
| consistency | 一致性 | yí zhì xìng |
| isolation/ˌaɪsəˈleɪʃn/ | 隔离性 | gé lí xìng |
| durability | 持久性 | chí jiǔ xìng |
| serializability | 可串行化 | kě chuàn xíng huà |
| two-phase locking | 两段锁 | liǎng duàn suǒ |
| isolation levels | 隔离级别 | gé lí jí bié |
全有或全无
- 事务 transaction 全有或全无,ACID 是四项承诺:原子性 atomicity(全有或全无)、一致性 consistency(约束恒真)、隔离性 isolation(交错看似串行)、持久性 durability(提交扛过崩溃)。

{exercise:uni-cs0805-acid}
练习
ACID 的 A 代表——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
全有或全无。
银行版丢失更新
- T1 读 100、T2 读 100、T1 写 90、T2 写 120:10 元取款消失了——与 7.3 同一场竞争,这次是钱。
R1(A) R2(A) W2(A) W1(A)终值 90,T2 的存款丢失;R1(A) W1(A) R2(A) W2(A)终值 110——等于串行的 T1 后 T2。可串行化 serializability:等于某个串行次序。
{exercise:uni-cs0805-schedule}
练习
从 100 起、-10/+20,交错 R1 R2 W2 W1 终值——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
T1 用旧读最后写:90,存款丢失。
锁与级别
- 两段锁 two-phase locking:读写加锁、锁持到提交——一个事务等待,结局等于串行序。死锁是代价:检测器杀掉牺牲者重试。
- 隔离级别 isolation levels 给你接受的异常命名:读未提交允许脏读(T2 看到 T1 后来回滚的 90);读已提交去掉它;可重复读稳定重读;可串行化去掉幻影。事务要短——锁在用户输入期间是死锁诱饵。
{exercise:uni-cs0805-levels}
练习
读到他人未提交又回滚的值,至少要修到——级别。
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
读已提交只见过已提交数据——脏读到此为止。