悆高级软件工程 网络环境中的软件质量26/197 客户C1:从帐号A向帐号B转¥40客户C2:计算三个帐号的总额 将帐号A上的金额减¥400 将帐号B上的金额加¥400 Balance: =A reado ¥1000 A write(balance-400) 5600 balance: =A reado ¥600 balance: =balance+B reado Y 2600 balance: =balance+B reado Y 5600 balance: =B reado ¥2000 B write(balance 400 ¥2400 结果:客户C2得到的帐号总额为¥5600,与实际总额不一致!
高级软件工程 网络环境中的软件质量 26/197 客户C1:从帐号A向帐号B转 ¥400 将帐号A上的金额减 ¥400 将帐号B上的金额加 ¥400 客户C2:计算三个帐号的总额 Balance:=A.read() ¥1000 A.write(balance -400) ¥600 balance:=A.read() ¥ 600 balance:=balance+B.read() ¥ 2600 balance:=balance+B.read() ¥ 5600 balance:=B.read() ¥2000 B.write(balance + 400) ¥2400 结果:客户C2得到的帐号总额为 ¥5600,与实际总额不一致!
悆高级软件工程 网络环境中的软件质量27/197 解决上述问题需要掌握如下信息: 该操作包括哪些低层操作? 这些低层操作涉及哪些持久数据? 这些操作的运行结果如何? 如果出现错误怎样处理? 类似的问题已经出现在 数据库管理系统 分布式操作系统 等领域 解决该问题的关键概念:事务( Transaction)
高级软件工程 网络环境中的软件质量 27/197 解决上述问题需要掌握如下信息: 该操作包括哪些低层操作? 这些低层操作涉及哪些持久数据? 这些操作的运行结果如何? 如果出现错误怎样处理? 类似的问题已经出现在 数据库管理系统 分布式操作系统 等领域 解决该问题的关键概念:事务(Transaction)
悆高级软件工程 网络环境中的软件质量28/197 2、事务概念及特性 事务是一系列操作 它们或者全部完成 或者全部不做 事务的ACID特性 事务的启动、提交与终止 事务的类别 事务的支持机制
高级软件工程 网络环境中的软件质量 28/197 2、事务概念及特性 事务是一系列操作 它们 或者全部完成 或者全部不做 •事务的ACID特性 •事务的启动、提交与终止 •事务的类别 •事务的支持机制
悆高级软件工程 网络环境中的软件质量29/197 (1)事务的ACID属性 Atomicity 原子性 Consistency 致性 ·|so| ation 分离性 Durability 持久性
高级软件工程 网络环境中的软件质量 29/197 (1)事务的ACID属性 • Atomicity 原子性 • Consistency 一致性 • Isolation 分离性 • Durability 持久性
悆高级软件工程 网络环境中的软件质量30/197 ·原子性( Atomicity) 事务或者被全部执行 或者任何修改都不起作用 事务的起点 是回卷点 也是重复执行的起点 事务的终点 是下一个事务的起点
高级软件工程 网络环境中的软件质量 30/197 • 原子性(Atomicity) 事务 或者被全部执行 或者任何修改都不起作用 事务的起点 是 回卷点 也是 重复执行的起点 事务的终点 是下一个事务的起点