【多选题】OceanBase 中,会产生事务长事务风险的场景有

【多选题】OceanBase 中,会产生事务长事务风险的场景有
A. 开启事务后长时间不提交
B. 大事务批量更新千万行数据
C. 事务内执行长时间查询
D. 快速执行单条 DML 立即提交

这道题的正确答案是 A、B、C

  • A. 开启事务后长时间不提交 :这是最典型的长事务场景。在 OceanBase 中,如果事务开启后长时间没有提交或回滚,会触发 ob_trx_timeout (事务未提交超时)或 ob_trx_idle_timeout (事务空闲超时)机制,导致事务被系统自动回滚并报错。
  • B. 大事务批量更新千万行数据 :在 OceanBase 的 LSM-Tree 存储架构下,所有写操作必须先在内存(MemTable)中完成。如果一次性批量更新千万行数据,会产生海量未提交数据,极易撑爆租户内存(导致 OOM);同时,这种大事务在提交时会触发涉及大量分区的分布式两阶段提交(2PC),不仅耗时极长,还容易引发锁等待甚至死锁,是系统极力排斥的“超级大事务”。
  • C. 事务内执行长时间查询 :OceanBase 的 ob_trx_timeout 计时是从事务开启(BEGIN)到事务结束(COMMIT/ROLLBACK)的总时长。如果事务内部包含执行时间极长的查询语句,会导致整个事务的存活时间大幅拉长,从而引发长事务风险。
  • D. 快速执行单条 DML 立即提交 :这是数据库最理想的标准短事务操作模式。事务生命周期极短,能够迅速释放锁资源和内存,不会产生长事务风险。