真题再现(2021年软件设计师真题)

四季读书网 1 0
真题再现(2021年软件设计师真题)

在某银行转账系统中,用户A向用户B转账1000元的操作包含:①扣除A账户1000元;②增加B账户1000元。若操作①成功但操作②失败(如系统突然断电),会导致数据不一致。为避免该问题,需利用事务的()特性。A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)

考点解析

本题核心考查事务的ACID特性,需明确四者的定义与作用:

1.原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不允许部分执行(如转账要么全成功,要么全失败)。
2.一致性(Consistency):事务执行前后,数据必须处于合法状态(如转账后A、B账户总金额不变)。
3.隔离性(Isolation):多个事务同时执行时,彼此不会相互干扰(如A向B转账时,C向A转账不会导致金额计算错误)。
4.持久性(Durability):事务完成后,修改的数据会永久保存(如断电后,已完成的转账不会丢失)。

详细分析过程

题干中“操作①成功但操作②失败”导致数据不一致,核心问题是“事务未全部完成却部分生效”,需通过原子性解决:

选项A:原子性确保转账的两步操作要么全成,要么全不执行(若②失败,①的扣除会回滚),能避免数据不一致,正确。
选项B:一致性是事务的最终目标,但题干场景是因步骤未完整执行导致不一致,需原子性保障执行完整性,排除。
选项C:隔离性解决多事务并发问题,与单事务内的步骤失败无关,排除。
选项D:持久性关注事务完成后的保存,不涉及执行中的失败回滚,排除。

工作中的实际应用

早年开发财务系统时,曾因忽视原子性出过大问题:某笔工资发放事务中,“扣除公司账户”成功,但“向员工账户打款”因网络波动失败,结果公司钱扣了,员工没收到,引发投诉。

后来给事务加上原子性控制:用数据库的BEGIN TRANSACTIONROLLBACK机制,若打款失败,自动回滚“扣除公司账户”的操作。从此,无论中间出现什么故障,要么全成功,要么全回滚,再没出现过账对不上的情况。

但要注意,原子性依赖数据库的日志机制,曾有项目因日志磁盘满了,导致事务失败后无法回滚,这提醒我们:保障ACID特性需配套完善的存储和监控。

答案总结

原子性是避免事务部分执行导致数据不一致的核心保障。

答案:A

抱歉,评论功能暂时关闭!