Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.0k views
in Technique[技术] by (71.8m points)

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是什么?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...