关于 OceanBase V4 死锁检测,说法正确的有?(多选) A. V4 默认开启死锁检测 B. 默认使用 LCL(锁链长度)方案 C. 发生死锁时,优先杀掉开启时间更晚的事务 D. KILL QUERY 杀掉等待锁的 SQL,不是整个会话

关于 OceanBase V4 死锁检测,说法正确的有?(多选)
A. V4 默认开启死锁检测
B. 默认使用 LCL(锁链长度)方案
C. 发生死锁时,优先杀掉开启时间更晚的事务
D. KILL QUERY 杀掉等待锁的 SQL,不是整个会话

  • A. V4 默认开启死锁检测(正确)
    OceanBase V4.0 及以上版本默认开启了基于锁链长度(LCL)算法的分布式死锁自动检测功能1。

  • B. 默认使用 LCL(锁链长度)方案(正确)
    OceanBase 从 V4.0 开始引入了 LCL(Lock Chain Length-based Distributed Algorithm)分布式死锁检测机制,这是其默认采用的纯分布式死锁检测与消除算法5。

  • C. 发生死锁时,优先杀掉开启时间更晚的事务(正确)
    当系统自动检测到死锁时,会自动回滚优先级最低的事务(通常是最晚开启的事务)来解除死锁。

  • D. KILL QUERY 杀掉等待锁的 SQL,不是整个会话(错误)
    在手动处理死锁或锁阻塞时,官方文档明确指出,确认阻塞源后应使用 KILL QUERY <session_id> 中断持有锁 的查询以释放锁资源,而不是中断等待锁的 SQL。此外,该选项表述为“不是整个会话”也不准确,因为 KILL QUERY 仅中断当前语句,而如果要彻底终止会话则需要使用 KILL <session_id> 。

因此,说法正确的选项是 A、B、C 。