关于OceanBase的表锁(Table Lock)机制,以下说法正确的有?
A. 在执行某些DDL操作(如添加列、修改表属性)时,OceanBase会自动获取相应的表锁以保证元数据的一致性
B. OceanBase不支持任何类型的表锁,完全依赖行锁(Row Lock)来解决并发冲突
C. 用户可以通过 LOCK TABLE 语句显式地对表加锁,以控制并发事务的访问顺序
D. 表锁一旦加上,就会永久锁定该表,直到数据库重启才会释放
4 个赞
选A和C
B错误: 这是一个常见的误解。OceanBase同时支持表锁和行锁 。
D错误: 表锁的释放遵循事务的生命周期,在事务提交或回滚时即会释放 ,绝不会永久存在。显式表锁可通过 COMMIT 或 ROLLBACK 释放。
3 个赞
AC
A 正确:OB 执行 DDL 时会自动加表级元数据锁,保障结构一致性;
B 错误:OB 既支持行锁,也支持表锁;
C 正确:支持 LOCK TABLE 显式加表锁管控并发;
D 错误:表锁随事务提交 / 回滚自动释放,不会永久持有。
3 个赞
AC,OceanBase支持表锁机制。在执行DDL或用户显式执行 LOCK TABLE 时都会用到表锁(A、C对)。表锁的作用范围是当前事务,事务提交或回滚后锁会自动释放,并不会永久锁定(D错)。B选项错误,OceanBase同时支持行锁和表锁。