关于将顶点/边缘插入Titan图形db 1.0;我做了批量插入。这意味着所需的子图将被添加到事务中,并且在同一个事务中插入整个子图之后它将被提交。我的问题是,Titan在反复插入顶点/边缘到同一个事务上显示出奇怪的性能(提交事务之前)。首先,整体吞吐量为每秒400个边/顶点,但根据子图的大小,每分钟将降至小于1个边/顶点! (请注意,性能下降是通过事务添加/更新边缘/顶点,存储后端尚未涉及。)Titan添加顶点,事务吞吐量的边缘在提交事务之前随着时间的推移而下降
我确实更改了事务缓存和db-cache,并且性能下降仍然存在于所有不同的场景。在我的测试场景中,性能下降只是通过频繁提交事务来停止,这会导致多线程情况下的一些不一致,并且不适用于我的应用程序。如果有人能帮助我克服这种情况,我会很感激。
到目前为止,不同场景的结果:
我在不同的场景有些轻微的GC活动,从顶点/边几百到顶点/边缘万元。
给予更多的堆空间没有改变GC活动和吞吐量落下。对于200k的顶点/边,即使4g的堆空间也不会改变整个下降;然而,从4g堆只有1g用于200k场景。
更改事务高速缓存不影响吞吐量下降。
增加数据库缓存提高在首位的插入时间,但整个再度回落。
更改
ids.flush
到false
不影响吞吐量下降。
对整个操作的一些信息:
之前增加边/顶点的交易,它会进行检查数据库中不存在具有相同标识符的边/顶点,如果边/顶点是全新的,它将被添加到事务中所有属性。我做了一些调查,似乎让我的一部分操作(检查边缘/顶点的存在)增加,但插入时间几乎是恒定的。
我泰坦配置:
storage.backend=cassandrathrift
storage.hostname=127.0.0.1
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.25
index.search.backend=solr
index.search.solr.mode=http
index.search.solr.http-urls=http://localhost:8983/solr/
schema.default=none
index.search.solr.wait-searcher=false
query.force-index=true
query.batch=true
query.fast-property=true
cache.tx-cache-size=4000000
关于我的问题的一些新的事实:
**似乎顶点/边让我的代码部分(当我要确保这是一个新的edge/vertex或不),以及代码的属性部分(当我想添加一些属性到顶点)是最耗时的部分,几乎所有的吞吐量下降都是由这些部分导致的。而且,如果我试图频繁地提交事务,整个吞吐量的下降将会得到解决,这在我的情况下是不可能的。 **
我改了上面提到的参数,吞吐量下降没有受到这个参数的影响,我的问题依然存在。 –
你能提供更多关于泰坦方法需要很长时间才能返回的信息吗? – imriqwe
主要问题已更新。 –