关于 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 。