怎样才能一个线程里一个Session
你们的关系是这样的吗? a → b ← c 然后要查 c
你每个线程从 pool 拿一个session,之后这个线程的所有query 都通过这个session 执行,就是每个线程一个session,线程之间的 session 是相互独立的。
1 个赞
大佬,有没有参考的Demo呀
假如你的蓝色节点是 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的语句查询的快 不过还是很感谢dingding老师提供的语句。还是要研究一个线程里怎么取一个新的SEssion,这样才能做到真正的并发
后来多试了几次,好像go方式的平均值应该比MATCH低
还是要研究一个线程里怎么取一个新的SEssion,这样才能做到真正的并发
这里我就没明白了,你前面的并发测试又是怎么测试的,难道是串行的?你只要保证每个线程运行的时候,从池里拿一个session就可以了,很简单的。
池里怎么会有多个Session呢
那是因为你们给 session 包了一层,你直接用 java client 的 ConnectionPool 拿 session 就可以了,ConnectionPool 是支持多线程调用 getSession 的接口。
好的 我们试下