事务调度与长事务

共 38 题
#

1. DDL 在 MySQL 中的隐式提交,执行 CREATE TABLE 自动提交事务?

A CREATE TABLE 不会影响当前事务。
B MySQL 的 DDL 可回滚。
C MySQL 的 DDL 会隐式提交当前事务,且 DDL 不可回滚。 ✓ 正确答案
D MySQL 支持事务性 DDL。
#

2. PostgreSQL 中 DDL 的事务性,CREATE TABLE 可回滚?

A PostgreSQL 的 DDL 会隐式提交。
B PostgreSQL 支持事务性 DDL,CREATE TABLE 可随事务回滚。 ✓ 正确答案
C PostgreSQL 的 CREATE TABLE 不可回滚。
D PostgreSQL 与 MySQL 的 DDL 行为相同。
#

3. 隐式提交的常见陷阱,autocommit、DDL、函数异常?

A autocommit 与 DDL 隐式提交可能意外拆分事务,破坏原子性。 ✓ 正确答案
B autocommit 不影响事务边界。
C DDL 不会隐式提交。
D 函数异常不会影响事务。
#

4. PostgreSQL DDL 的事务性?

A PostgreSQL 的 DDL 不可回滚。
B PostgreSQL 的 DDL 可随事务回滚,迁移脚本可原子执行。 ✓ 正确答案
C PostgreSQL 的 DDL 隐式提交。
D PostgreSQL 迁移脚本无法回滚。
#

5. 2PC 的单点故障(协调者宕机)与悬挂事务(in-doubt transaction)?

A 悬挂事务会自动解决。
B 协调者不是单点故障。
C 2PC 中协调者宕机会导致悬挂事务,需靠日志与恢复解决。 ✓ 正确答案
D 2PC 无单点故障。
#

6. Saga 模式,长事务拆分为多个本地事务 + 补偿?

A Saga 不需要补偿。
B Saga 保证全局原子性。
C Saga 把长事务拆为本地事务,失败时逆序执行补偿实现最终一致。 ✓ 正确答案
D Saga 与 2PC 完全相同。
#

7. TCC(Try-Confirm-Cancel)补偿事务模式?

A TCC 不需要预留资源。
B TCC 只有两阶段。
C TCC 分 Try 预留资源、Confirm 确认、Cancel 取消三阶段。 ✓ 正确答案
D TCC 与 2PC 的 prepare/commit 相同。
#

8. XA 事务的标准(JTA、XA 规范)的实现?

A XA 是单机事务。
B XA 是基于 2PC 的分布式事务规范,JTA 是 Java 的 XA 接口。 ✓ 正确答案
C JTA 与 XA 无关。
D XA 没有 prepare 阶段。
#

9. 两阶段提交(2PC, Two-Phase Commit)的协调者-参与者模型?

A 2PC 无协调者。
B 2PC 只有单参与者。
C 2PC 没有 prepare 阶段。
D 2PC 由协调者协调多个参与者,prepare 后统一 commit 或 abort。 ✓ 正确答案
#

10. Seata AT 模式如何通过全局锁 + 本地 undo log 实现自动补偿?它面临的脏写问题是什么,TCC 的空回滚、悬挂与幂等又如何防御?

A Seata AT 用全局锁+undo log 自动补偿,TCC 需防空回滚、悬挂与幂等。 ✓ 正确答案
B AT 模式无脏写问题。
C TCC 不需要幂等。
D AT 模式不生成 undo log。
#

11. 本地消息表与 RocketMQ 事务消息(half message + 状态回查)分别如何实现最终一致性?二者在可靠性、耦合度与运维成本上有何差异?

A 本地消息表不需要本地事务。
B 两者实现完全相同。
C 事务消息不使用 half message。
D 本地消息表用本地事务+定时投递,RocketMQ 事务消息用 half message+状态回查。 ✓ 正确答案
#

12. MySQL XA(2PC)的性能开销来自哪里(binlog 与 redo 两阶段落盘、锁持有到 COMMIT 之后)?为什么高并发互联网场景很少直接使用 XA?

A XA 锁持有时间短。
B XA 性能开销小。
C MySQL XA 因两阶段落盘与长锁持有开销大,高并发场景少用 XA。 ✓ 正确答案
D 高并发场景最适合用 XA。
#

13. 两阶段锁(2PL, Two-Phase Locking)与可串行化的关系?

A 2PL 分增长期与收缩期,保证冲突可串行化,严格 2PL 防级联回滚。 ✓ 正确答案
B 2PL 与可串行化无关。
C 2PL 只允许获取锁不允许释放。
D 2PL 无锁。
#

14. 严格两阶段锁(Strict 2PL)防止级联回滚?

A 级联回滚无法避免。
B 严格 2PL 提前释放锁。
C 严格 2PL 在事务提交后才释放锁,防止读到未提交数据导致级联回滚。 ✓ 正确答案
D 严格 2PL 读到未提交数据。
#

15. 事务调度(Schedule)的概念,串行调度(Serial)与可串行化调度?

A 串行调度总是交错。
B 串行调度事务不交错,可串行化调度结果等价于某串行调度。 ✓ 正确答案
C 可串行化调度等价于任意交错。
D 调度与并发无关。
#

16. 可串行化(Serializable)的两种判定,冲突等价(Conflict Equivalence)与视图等价(View Equivalence)?

A 冲突等价与操作顺序无关。
B 两种等价完全相同。
C 视图可串行化是冲突可串行化的子集。
D 冲突等价看冲突操作顺序,视图等价看读值与最终写,冲突可串行化是视图可串行化的子集。 ✓ 正确答案
#

17. 时间戳排序(Timestamp Ordering, TO)的乐观并发控制?

A TO 不适合冲突排序。
B 时间戳排序用锁串行化。
C 时间戳排序按时间戳决定事务顺序,冲突时回滚,是乐观并发控制。 ✓ 正确答案
D TO 保证视图可串行化。
#

18. 两阶段锁(2PL)?

A 2PL 永不阻塞。
B 2PL 无锁。
C 2PL 与可串行化无关。
D 2PL 分增长期获取锁、收缩期释放锁,保证冲突可串行化但可能死锁。 ✓ 正确答案
#

19. MySQL InnoDB 中 SAVEPOINT 与嵌套事务的差异?

A SAVEPOINT 与嵌套事务完全相同。
B SAVEPOINT 是独立子事务。
C SAVEPOINT 可提交子事务。
D InnoDB 无真正嵌套事务,SAVEPOINT 提供事务内部分回滚。 ✓ 正确答案
#

20. SQL 标准中的嵌套事务支持(SAVEPOINT 的有限近似)?

A SAVEPOINT 可独立提交子事务。
B SQL 标准要求真正的嵌套事务。
C SQL 标准用 SAVEPOINT 提供事务内部分回滚,是对嵌套事务的有限近似。 ✓ 正确答案
D SAVEPOINT 与嵌套事务完全等价。
#

21. 长事务/大事务对主从复制延迟的影响(binlog/WAL 单事务串行应用)与治理

A 大事务产生大量日志,从库单事务串行应用导致复制延迟放大。 ✓ 正确答案
B 大事务不影响复制延迟。
C 从库可并行应用同一事务。
D 长事务不会阻塞复制。
#

22. 嵌套事务(Nested Transaction)的概念,内部事务回滚不影响外部?

A 嵌套事务与 SAVEPOINT 无关。
B 内部回滚会回滚整个外部事务。
C 数据库原生支持真正的嵌套事务。
D 嵌套事务中内部子事务回滚不影响外部事务。 ✓ 正确答案
#

23. 长事务对 MVCC 的影响,版本膨胀(Version Bloat)、VACUUM 阻塞?

A 长事务阻塞 VACUUM 回收旧版本,导致版本膨胀与空间占用。 ✓ 正确答案
B 长事务不影响 MVCC。
C VACUUM 不受长事务影响。
D 旧版本总能被回收。
#

24. 长事务的检测,pg_stat_activity、INFORMATION_SCHEMA.INNODB_TRX?

A PostgreSQL 用 pg_stat_activity、MySQL 用 innodb_trx 检测长事务。 ✓ 正确答案
B 长事务无法检测。
C 两个系统用同一张表检测。
D 只需看 CPU 就能判断长事务。
#

25. 长事务(Long Transaction)的成因,未提交事务、慢查询、客户端异常?

A 长事务成因包括未提交、慢查询、客户端异常等。 ✓ 正确答案
B 长事务都是正常的。
C 客户端异常不会导致长事务。
D 慢查询不会导致长事务。
#

26. Oracle 中 DDL 的隐式提交行为?

A Oracle 的 DDL 会隐式提交当前事务,且 DDL 不可回滚。 ✓ 正确答案
B Oracle 的 DDL 可回滚。
C Oracle 与 PostgreSQL 的 DDL 行为相同。
D Oracle 的 DDL 不影响当前事务。
#

27. SAVEPOINT 的语法,SAVEPOINT sp1、ROLLBACK TO SAVEPOINT sp1?

A SAVEPOINT 设置保存点,ROLLBACK TO 回滚到保存点,RELEASE 释放保存点。 ✓ 正确答案
B ROLLBACK TO 会结束事务。
C RELEASE 会撤销之前操作。
D 回滚到保存点后事务无法继续。
#

28. 最终一致性(Eventual Consistency)vs 强一致性?

A 强一致读最新数据,最终一致允许短暂不一致后收敛。 ✓ 正确答案
B 两者完全相同。
C 最终一致保证即时一致。
D 强一致牺牲一致性。
#

29. 最大努力通知(有限次重试 + 降级)与定期对账补偿机制如何配合,覆盖非实时跨系统一致性需求?

A 定期对账只用于实时场景。
B 最大努力通知保证即时一致。
C 最大努力通知(有限重试+降级)与定期对账兜底,实现非实时最终一致性。 ✓ 正确答案
D 两者互斥。
#

30. 冲突可串行化(Conflict Serializable)的判定,优先图(Precedence Graph)的环检测?

A 优先图与串行化无关。
B 优先图有环也冲突可串行化。
C 冲突可串行化不需要判环。
D 冲突可串行化用优先图判环,无环则冲突可串行化。 ✓ 正确答案
#

31. idle_in_transaction_session_timeout 的设置?

A idle_in_transaction_session_timeout 自动终止超时空闲事务,防止长事务。 ✓ 正确答案
B 该参数只影响事务外空闲。
C 该参数默认强制启用。
D 该参数不影响事务。
#

32. SAVEPOINT 的嵌套与释放规则?

A SAVEPOINT 可嵌套,回滚到外层保存点会释放内层保存点。 ✓ 正确答案
B 嵌套保存点互不影响。
C RELEASE 会撤销操作。
D 回滚不影响任何保存点。
#

33. DDL 与事务的关系,PostgreSQL 支持事务性 DDL 而 MySQL 隐式提交,这种差异对迁移脚本与回滚策略有什么影响?

A MySQL 的 DDL 可随事务回滚。
B 两者迁移回滚策略相同。
C PostgreSQL 迁移可事务回滚 DDL,MySQL 迁移需手动补偿。 ✓ 正确答案
D PostgreSQL 的 DDL 不可回滚。
#

34. MySQL DDL 的隐式提交?

A MySQL 的 DDL 可随事务回滚。
B MySQL 的 DDL 会隐式提交当前事务,且 DDL 不可回滚。 ✓ 正确答案
C DDL 不影响事务边界。
D TRUNCATE 可回滚。
#

35. MySQL autocommit?

A autocommit=ON 时每条语句自动提交,多语句事务需显式 BEGIN。 ✓ 正确答案
B autocommit=OFF 时自动提交。
C autocommit 不影响事务边界。
D autocommit=ON 时无法开启事务。
#

36. RELEASE SAVEPOINT?

A RELEASE 与 ROLLBACK TO 相同。
B RELEASE 撤销已执行操作。
C 释放后保存点仍可回滚。
D RELEASE SAVEPOINT 只释放保存点,不撤销已执行的操作。 ✓ 正确答案
#

37. 乐观并发控制(OCC)的冲突检测与重试策略(版本号/条件更新)在业务中的应用

A 版本号无法检测冲突。
B OCC 提前加锁防冲突。
C OCC 不需要冲突检测。
D OCC 用版本号/条件更新在提交时检测冲突,冲突时重试。 ✓ 正确答案
#

38. PostgreSQL 的 statement_timeout/lock_timeout/idle_in_transaction_session_timeout 的区别与应用

A 三者相同。
B statement_timeout 限语句执行,lock_timeout 限锁等待,idle_in_transaction_session_timeout 限事务空闲。 ✓ 正确答案
C lock_timeout 限语句执行。
D idle_in_transaction_session_timeout 限连接数。