【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.5
【问题描述】
请问咱们的OceanBase数据库的旁路导入方式是否都是锁表操作?包括load data和obloader里面的旁路导入操作
【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.5
【问题描述】
请问咱们的OceanBase数据库的旁路导入方式是否都是锁表操作?包括load data和obloader里面的旁路导入操作
在 OceanBase 数据库的旁路导入过程中,无论是使用 LOAD DATA
语句还是 OBLOADER 工具,都会进行表锁操作。具体说明如下:
LOAD DATA
语句:
LOAD DATA
语句在执行时会主动提交之前的事务,同时在导入期间会加表锁,表无法被写入其他数据,整个过程中表是只读的。OBLOADER 工具:
data
文件中分配空间并插入数据,为了保证数据的一致性和完整性,需要在导入期间锁定表。综上所述,无论是使用 LOAD DATA
语句还是 OBLOADER 工具进行旁路导入,都会进行表锁操作。
具体信息可参考以下文档:
目前锁表。下个大版本就会支持多个旁路任务进行同一个表导入了
旁路导入流程
不锁表的话怎么保证一致性呢
对于普通的 LOAD DATA
方式(非旁路导入),OceanBase 数据库并不会像旁路导入那样存在严格的限制。普通 LOAD DATA
方式允许在不同的客户端同时向同一个表导入数据。然而,需要注意的是,每个导入操作仍然会获取表上的写锁,在并发场景下可能会导致锁定冲突,因此实际使用中可能需要进行适当的并发控制以确保数据的一致性和导入效率。
检索到的文档如下:
666