H5W3
当前位置:H5W3 > 问答 > 正文

ChunkInTransaction filepath has been owned by transaction 20084

python apidolphindb中保存数据出错。

RuntimeError: <Server Exception> in run: ::append!(pt, t) => <ChunkInTransaction>filepath '/databaseName/Key0' has been owned by transaction 20084

这是什么错误?
怎么查看这个transaction 20084是什么?

回答

这个错误是因为有多个进程/线程同时往分区’/databaseName/Key0’写入数据了。DolphinDB对分布式数据库表的读写支持事务,也就是说确保事务的原子性,一致性,隔离性和持久化。DolphinDB采用多版本机制实现快照级别的隔离。在这种隔离机制下,数据的读操作和写操作互相不阻塞,可以最大程度优化数据仓库读的性能。为了最大程序优化数据仓库查询、分析、计算的性能,DolphinDB对事务作了一些限制:

  • 首先,一个事务只能包含写或者读,不能同时进行写和读。
  • 其次,一个写事务可以跨越多个分区,但是同一个分区不能被多个writer并发写入。当一个分区被某一个事务A锁定之后,另一个事务B试图再次去锁定这个分区时,系统立刻会抛出异常导致事务B失败回滚。

对于hash分区,可以用hashBucket获得bucket。https://segmentfault.com/q/10… 有个例子请参阅。

未经允许不得转载:H5W3 » ChunkInTransaction filepath has been owned by transaction 20084

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址