怎么保重高并发快速查询

什么意思,你上面发的query 就是可以用go等效的

go 出发的 应该是该节点由自己的出边出去的。而我们IP的是入边端的节点。

go 可以查出边也可以查入边,也可以查双向边,现在的 match 查询性能不行,你要想并发性能好些,还是先用 go 做

GO [[<M> TO] <N> STEPS ] FROM <vertex_list>
OVER <edge_type_list> [{REVERSELY | BIDIRECT}]
[ WHERE <conditions> ]
[YIELD [DISTINCT] <return_list>]
[| ORDER BY <expression> [{ASC | DESC}]]
[| LIMIT [<offset_value>,] <number_rows>]

刚刚试了 GO的就是空的 :sob:

怎样才能一个线程里一个Session

你们的关系是这样的吗? a → b ← c 然后要查 c

你每个线程从 pool 拿一个session,之后这个线程的所有query 都通过这个session 执行,就是每个线程一个session,线程之间的 session 是相互独立的。

1 个赞

周围的绿色节点都指向蓝色节点,由蓝色节点查

大佬,有没有参考的Demo呀

这里怎么才能改成一个线程里一个Session,据说for循环里又开Session会报错的

假如你的蓝色节点是 a,从 a 出发,假如要查它两度内所有的点是吗?
其他点和 a 的关系都是这样的吗,例如 a<-[e1]-b<-[e2]-c, a<-[e2]-d<-[e1]-e, a<-[e2]-f<-[e2]-g

是的

$var = (GO FROM a OVER e1 REVERSELY YIELD e1._dst_id as id, $$.user.state as state, $$.user.user_id as user_id UNION \
GO FROM a OVER e2 REVERSELY YIELD e2._dst_id as id, $$.user.state as state, $$.user.user_id as user_id); \
GO FROM $var.id OVER e1,e2 REVERSELY YIELD $$.user.state as state, $$.user.user_id as user_id

把上面的a替换成你的输入点, e1,e2替换成你具体的边

刚试了下 发现还没有MATCH的语句查询的快 :joy: 不过还是很感谢dingding老师提供的语句。还是要研究一个线程里怎么取一个新的SEssion,这样才能做到真正的并发

后来多试了几次,好像go方式的平均值应该比MATCH低

还是要研究一个线程里怎么取一个新的SEssion,这样才能做到真正的并发

这里我就没明白了,你前面的并发测试又是怎么测试的,难道是串行的?你只要保证每个线程运行的时候,从池里拿一个session就可以了,很简单的。

池里怎么会有多个Session呢

pipeline里怎么才能获取一个不同的session呢

那是因为你们给 session 包了一层,你直接用 java client 的 ConnectionPool 拿 session 就可以了,ConnectionPool 是支持多线程调用 getSession 的接口。

好的 我们试下